home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_a_d / 31updt.zip / 31UPDATE.ZIP / WINDOWS.H < prev   
C/C++ Source or Header  |  1991-09-01  |  128KB  |  4,103 lines

  1. #if !defined( __WINDOWS_H )
  2. #define __WINDOWS_H
  3.  
  4. /****************************************************************************/
  5. /*                                                                          */
  6. /*  WINDOWS.H -                                                             */
  7. /*                                                                          */
  8. /*  Include file for Windows 3.1 applications                               */
  9. /*                                                                          */
  10. /****************************************************************************/
  11.  
  12. #ifndef RC_INVOKED
  13. #pragma option -a-
  14. #endif
  15.  
  16. #if defined( __cplusplus )
  17. extern "C" {
  18. #endif  /* __cplusplus */
  19.  
  20. /*  If defined, the following flags inhibit definition
  21.  *     of the indicated items.
  22.  *
  23.  *  NOGDICAPMASKS     - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
  24.  *  NOVIRTUALKEYCODES - VK_*
  25.  *  NOWINMESSAGES     - WM_*, EM_*, LB_*, CB_*
  26.  *  NOWINSTYLES       - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
  27.  *  NOSYSMETRICS      - SM_*
  28.  *  NOMENUS          - MF_*
  29.  *  NOICONS          - IDI_*
  30.  *  NOKEYSTATES       - MK_*
  31.  *  NOSYSCOMMANDS     - SC_*
  32.  *  NORASTEROPS       - Binary and Tertiary raster ops
  33.  *  NOSHOWWINDOW      - SW_*
  34.  *  OEMRESOURCE       - OEM Resource values
  35.  *  NOATOM          - Atom Manager routines
  36.  *  NOCLIPBOARD       - Clipboard routines
  37.  *  NOCOLOR          - Screen colors
  38.  *  NOCTLMGR          - Control and Dialog routines
  39.  *  NODRAWTEXT          - DrawText() and DT_*
  40.  *  NOGDI          - All GDI defines and routines
  41.  *  NOKERNEL          - All KERNEL defines and routines
  42.  *  NOUSER          - All USER defines and routines
  43.  *  NOMB          - MB_* and MessageBox()
  44.  *  NOMEMMGR          - GMEM_*, LMEM_*, GHND, LHND, associated routines
  45.  *  NOMETAFILE          - typedef METAFILEPICT
  46.  *  NOMINMAX          - Macros min(a,b) and max(a,b)
  47.  *  NOMSG          - typedef MSG and associated routines
  48.  *  NOOPENFILE          - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
  49.  *  NOSCROLL          - SB_* and scrolling routines
  50.  *  NOSOUND          - Sound driver routines
  51.  *  NOTEXTMETRIC      - typedef TEXTMETRIC and associated routines
  52.  *  NOWH          - SetWindowsHook and WH_*
  53.  *  NOWINOFFSETS      - GWL_*, GCL_*, associated routines
  54.  *  NOHELP            - Help engine interface.
  55.  *  NOPROFILER          - Profiler interface.
  56.  *  NODEFERWINDOWPOS  - DeferWindowPos routines
  57.  *  NODRIVERS         - Installable driver defines
  58.  *  NODBCS            - DBCS support stuff.
  59.  *  NOSYSPARAMSINFO   - SystemParameterInfo (SPI_*)
  60.  *  NOSCALABLEFONT    - Scalable font prototypes and data structures
  61.  *
  62.  *  USECOMM           - Include COMM driver routines
  63.  */
  64.  
  65. #ifdef RC_INVOKED
  66.  
  67. /* Turn off a bunch of stuff to ensure that RC files compile OK. */
  68. #define NOATOM
  69. #define NOGDI
  70. #define NOGDICAPMASKS
  71. #define NOMETAFILE
  72. #define NOMINMAX
  73. #define NOMSG
  74. #define NOOPENFILE
  75. #define NORASTEROPS
  76. #define NOSCROLL
  77. #define NOSOUND
  78. #define NOSYSMETRICS
  79. #define NOTEXTMETRIC
  80. #define NOWH
  81. #define NODBCS
  82. #define NOSYSPARAMSINFO
  83.  
  84. #endif /* RC_INVOKED */
  85.  
  86. #ifndef NULL
  87. #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  88. #define NULL  0
  89. #else
  90. #define NULL  0L
  91. #endif
  92. #endif
  93.  
  94. /*--------------------------------------------------------------------------*/
  95. /*  General Purpose Defines                            */
  96. /*--------------------------------------------------------------------------*/
  97.  
  98. #define FALSE            0
  99. #define TRUE            1
  100.  
  101. #define FAR            far
  102. #define NEAR            near
  103. #define LONG            long
  104. #define VOID            void
  105.  
  106. #define PASCAL            pascal
  107.  
  108. #if !defined( NOMINMAX ) && !defined( __cplusplus )
  109.  
  110. #ifndef max
  111. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  112. #endif
  113.  
  114. #ifndef min
  115. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  116. #endif
  117.  
  118. #endif  /* NOMINMAX */
  119.  
  120. #define MAKELONG(a, b)        ((LONG)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
  121. #define LOWORD(l)        ((WORD)(l))
  122. #define HIWORD(l)        ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
  123. #define LOBYTE(w)        ((BYTE)(w))
  124. #define HIBYTE(w)        ((BYTE)(((WORD)(w) >> 8) & 0xFF))
  125. #define MAKELP(sel, off)    ((VOID FAR *)MAKELONG(off, sel))
  126. #define SELECTOROF(lp)        HIWORD(lp)
  127. #define OFFSETOF(lp)        LOWORD(lp)
  128.  
  129. typedef int            BOOL;
  130. typedef unsigned char        BYTE;
  131. typedef unsigned short        WORD;
  132. typedef unsigned long        DWORD;
  133. typedef char near        *PSTR;
  134. typedef char near        *NPSTR;
  135. typedef char far        *LPSTR;
  136. typedef BYTE near        *PBYTE;
  137. typedef BYTE far        *LPBYTE;
  138. typedef int near        *PINT;
  139. typedef int far         *LPINT;
  140. typedef WORD near        *PWORD;
  141. typedef WORD far        *LPWORD;
  142. typedef long near        *PLONG;
  143. typedef long far        *LPLONG;
  144. typedef DWORD near        *PDWORD;
  145. typedef DWORD far        *LPDWORD;
  146. typedef void far        *LPVOID;
  147.  
  148. #ifndef WIN_INTERNAL
  149. typedef WORD            HANDLE;
  150. typedef HANDLE            HWND;
  151. #endif
  152.  
  153. typedef HANDLE            *PHANDLE;
  154. typedef HANDLE NEAR        *SPHANDLE;
  155. typedef HANDLE FAR        *LPHANDLE;
  156. typedef HANDLE            GLOBALHANDLE;
  157. typedef HANDLE            LOCALHANDLE;
  158. typedef int (FAR PASCAL *FARPROC)();
  159. typedef int (NEAR PASCAL *NEARPROC)();
  160.  
  161. typedef HANDLE            HSTR;
  162. typedef HANDLE            HICON;
  163. typedef HANDLE            HDC;
  164. typedef HANDLE            HMENU;
  165. typedef HANDLE            HPEN;
  166. typedef HANDLE            HFONT;
  167. typedef HANDLE            HBRUSH;
  168. typedef HANDLE            HBITMAP;
  169. typedef HANDLE            HCURSOR;
  170. typedef HANDLE            HRGN;
  171. typedef HANDLE            HPALETTE;
  172.  
  173. typedef DWORD            COLORREF;
  174.  
  175. #ifndef WIN_INTERNAL
  176. typedef struct tagRECT
  177.   {
  178.     int     left;
  179.     int     top;
  180.     int     right;
  181.     int     bottom;
  182.   } RECT;
  183. #endif
  184.  
  185. typedef RECT            *PRECT;
  186. typedef RECT NEAR        *NPRECT;
  187. typedef RECT FAR        *LPRECT;
  188.  
  189. typedef struct tagPOINT
  190.   {
  191.     int     x;
  192.     int     y;
  193.   } POINT;
  194. typedef POINT            *PPOINT;
  195. typedef POINT NEAR        *NPPOINT;
  196. typedef POINT FAR        *LPPOINT;
  197.  
  198.  
  199. /*--------------------------------------------------------------------------*/
  200. /*  KERNEL Section                                */
  201. /*--------------------------------------------------------------------------*/
  202.  
  203. #ifndef NOKERNEL
  204.  
  205. /* Loader Routines */
  206. DWORD    FAR PASCAL GetVersion(void);
  207. WORD    FAR PASCAL GetNumTasks(void);
  208. HANDLE    FAR PASCAL GetCodeHandle(FARPROC);
  209. void    FAR PASCAL GetCodeInfo(FARPROC lpProc, LPVOID lpSegInfo);
  210. HANDLE    FAR PASCAL GetModuleHandle(LPSTR);
  211. int    FAR PASCAL GetModuleUsage(HANDLE);
  212. int    FAR PASCAL GetModuleFileName(HANDLE, LPSTR, int);
  213. int    FAR PASCAL GetInstanceData(HANDLE, NPSTR, int);
  214. FARPROC FAR PASCAL GetProcAddress(HANDLE, LPSTR);
  215. FARPROC FAR PASCAL MakeProcInstance(FARPROC, HANDLE);
  216. void    FAR PASCAL FreeProcInstance(FARPROC);
  217. HANDLE    FAR PASCAL LoadLibrary(LPSTR);
  218. HANDLE  FAR PASCAL LoadModule(LPSTR, LPVOID);
  219. BOOL    FAR PASCAL FreeModule(HANDLE);
  220. void    FAR PASCAL FreeLibrary(HANDLE);
  221. DWORD   FAR PASCAL GetFreeSpace(WORD);
  222. WORD    FAR PASCAL WinExec(LPSTR, WORD);
  223. void    FAR PASCAL DebugBreak(void);
  224. void    FAR PASCAL OutputDebugString(LPSTR);
  225. void    FAR PASCAL SwitchStackBack(void);
  226. void    FAR PASCAL SwitchStackTo(WORD, WORD, WORD);
  227. WORD    FAR PASCAL GetCurrentPDB(void);
  228. #ifdef WIN31
  229. BOOL    FAR PASCAL IsTask(HANDLE);
  230. #endif
  231.  
  232. #ifndef NOOPENFILE
  233.  
  234. /* OpenFile() Structure */
  235. typedef struct tagOFSTRUCT
  236.   {
  237.     BYTE    cBytes;
  238.     BYTE    fFixedDisk;
  239.     WORD    nErrCode;
  240.     BYTE    reserved[4];
  241.     BYTE    szPathName[128];
  242.   } OFSTRUCT;
  243. typedef OFSTRUCT        *POFSTRUCT;
  244. typedef OFSTRUCT NEAR        *NPOFSTRUCT;
  245. typedef OFSTRUCT FAR        *LPOFSTRUCT;
  246.  
  247. /* OpenFile() Flags */
  248. #define OF_READ         0x0000
  249. #define OF_WRITE        0x0001
  250. #define OF_READWRITE        0x0002
  251. #define OF_SHARE_COMPAT        0x0000
  252. #define OF_SHARE_EXCLUSIVE  0x0010
  253. #define OF_SHARE_DENY_WRITE 0x0020
  254. #define OF_SHARE_DENY_READ  0x0030
  255. #define OF_SHARE_DENY_NONE  0x0040
  256. #define OF_PARSE        0x0100
  257. #define OF_DELETE        0x0200
  258. #define OF_VERIFY        0x0400
  259. #define OF_CANCEL        0x0800
  260. #define OF_CREATE        0x1000
  261. #define OF_PROMPT        0x2000
  262. #define OF_EXIST        0x4000
  263. #define OF_REOPEN        0x8000
  264.  
  265. int  FAR PASCAL OpenFile(LPSTR, LPOFSTRUCT, WORD);
  266.  
  267. /* GetTempFileName() Flags */
  268. #define TF_FORCEDRIVE        (BYTE)0x80
  269.  
  270. BYTE FAR PASCAL GetTempDrive(BYTE);
  271. int  FAR PASCAL GetTempFileName(BYTE, LPSTR, WORD, LPSTR);
  272. WORD FAR PASCAL SetHandleCount(WORD);
  273.  
  274. WORD FAR PASCAL GetDriveType(int);
  275. /* GetDriveType return values */
  276. #define DRIVE_REMOVABLE 2
  277. #define DRIVE_FIXED     3
  278. #define DRIVE_REMOTE    4
  279.  
  280. #endif /* NOOPENFILE */
  281.  
  282. #ifndef NOMEMMGR
  283.  
  284. /* Global Memory Flags */
  285. #define GMEM_FIXED        0x0000
  286. #define GMEM_MOVEABLE        0x0002
  287. #define GMEM_NOCOMPACT        0x0010
  288. #define GMEM_NODISCARD        0x0020
  289. #define GMEM_ZEROINIT        0x0040
  290. #define GMEM_MODIFY        0x0080
  291. #define GMEM_DISCARDABLE    0x0100
  292. #define GMEM_NOT_BANKED     0x1000
  293. #define GMEM_SHARE        0x2000
  294. #define GMEM_DDESHARE        0x2000
  295. #define GMEM_NOTIFY        0x4000
  296. #define GMEM_LOWER        GMEM_NOT_BANKED
  297.  
  298. #define GHND            (GMEM_MOVEABLE | GMEM_ZEROINIT)
  299. #define GPTR            (GMEM_FIXED | GMEM_ZEROINIT)
  300.  
  301. #define GlobalDiscard(h) GlobalReAlloc(h, 0L, GMEM_MOVEABLE)
  302.  
  303. HANDLE FAR PASCAL GlobalAlloc(WORD, DWORD);
  304. DWORD  FAR PASCAL GlobalCompact(DWORD);
  305. HANDLE FAR PASCAL GlobalFree(HANDLE);
  306. DWORD  FAR PASCAL GlobalHandle(WORD);
  307. LPSTR  FAR PASCAL GlobalLock(HANDLE);
  308. HANDLE FAR PASCAL GlobalReAlloc(HANDLE, DWORD, WORD);
  309. DWORD  FAR PASCAL GlobalSize(HANDLE);
  310. BOOL   FAR PASCAL GlobalUnlock(HANDLE);
  311. WORD   FAR PASCAL GlobalFlags(HANDLE);
  312. LPSTR  FAR PASCAL GlobalWire(HANDLE);
  313. BOOL   FAR PASCAL GlobalUnWire(HANDLE);
  314. HANDLE FAR PASCAL GlobalLRUNewest(HANDLE);
  315. HANDLE FAR PASCAL GlobalLRUOldest(HANDLE);
  316. VOID   FAR PASCAL GlobalNotify(FARPROC);
  317. WORD   FAR PASCAL GlobalPageLock(HANDLE);
  318. WORD   FAR PASCAL GlobalPageUnlock(HANDLE);
  319. VOID   FAR PASCAL GlobalFix(HANDLE);
  320. BOOL   FAR PASCAL GlobalUnfix(HANDLE);
  321. DWORD  FAR PASCAL GlobalDosAlloc(DWORD);
  322. WORD   FAR PASCAL GlobalDosFree(WORD);
  323.  
  324. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  325. #define GMEM_DISCARDED        0x4000
  326. #define GMEM_LOCKCOUNT        0x00FF
  327.  
  328. #define LockData(dummy)     LockSegment(0xFFFF)
  329. #define UnlockData(dummy)   UnlockSegment(0xFFFF)
  330.  
  331. HANDLE FAR PASCAL LockSegment(WORD);
  332. HANDLE FAR PASCAL UnlockSegment(WORD);
  333.  
  334. /* Local Memory Flags */
  335. #define LMEM_FIXED        0x0000
  336. #define LMEM_MOVEABLE        0x0002
  337. #define LMEM_NOCOMPACT        0x0010
  338. #define LMEM_NODISCARD        0x0020
  339. #define LMEM_ZEROINIT        0x0040
  340. #define LMEM_MODIFY        0x0080
  341. #define LMEM_DISCARDABLE    0x0F00
  342.  
  343. #define LHND            (LMEM_MOVEABLE | LMEM_ZEROINIT)
  344. #define LPTR            (LMEM_FIXED | LMEM_ZEROINIT)
  345.  
  346. #define NONZEROLHND        (LMEM_MOVEABLE)
  347. #define NONZEROLPTR        (LMEM_FIXED)
  348.  
  349. #define LNOTIFY_OUTOFMEM    0
  350. #define LNOTIFY_MOVE        1
  351. #define LNOTIFY_DISCARD     2
  352.  
  353.  
  354. #define LocalDiscard(h)     LocalReAlloc(h, 0, LMEM_MOVEABLE)
  355.  
  356. HANDLE    FAR PASCAL LocalAlloc(WORD, WORD);
  357. WORD    FAR PASCAL LocalCompact(WORD);
  358. HANDLE    FAR PASCAL LocalFree(HANDLE);
  359. HANDLE    FAR PASCAL LocalHandle(WORD);
  360. BOOL    FAR PASCAL LocalInit( WORD, WORD, WORD);
  361. char NEAR * FAR PASCAL LocalLock(HANDLE);
  362. FARPROC FAR PASCAL LocalNotify(FARPROC);
  363. HANDLE    FAR PASCAL LocalReAlloc(HANDLE, WORD, WORD);
  364. WORD    FAR PASCAL LocalSize(HANDLE);
  365. BOOL    FAR PASCAL LocalUnlock(HANDLE);
  366. WORD    FAR PASCAL LocalFlags(HANDLE);
  367. WORD    FAR PASCAL LocalShrink(HANDLE, WORD);
  368.                              
  369. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  370. #define LMEM_DISCARDED        0x4000
  371. #define LMEM_LOCKCOUNT        0x00FF
  372.  
  373. #endif /* NOMEMMGR */
  374.  
  375. LONG   FAR PASCAL SetSwapAreaSize(WORD);
  376. VOID   FAR PASCAL ValidateFreeSpaces(void);
  377. VOID   FAR PASCAL LimitEmsPages(DWORD);
  378. BOOL   FAR PASCAL SetErrorMode(WORD);
  379. VOID   FAR PASCAL ValidateCodeSegments(void);
  380.  
  381. #define UnlockResource(h)   GlobalUnlock(h)
  382.  
  383. HANDLE  FAR PASCAL FindResource(HANDLE, LPSTR, LPSTR);
  384. HANDLE  FAR PASCAL LoadResource(HANDLE, HANDLE);
  385. BOOL    FAR PASCAL FreeResource(HANDLE);
  386. LPSTR   FAR PASCAL LockResource(HANDLE);
  387. FARPROC FAR PASCAL SetResourceHandler(HANDLE, LPSTR, FARPROC);
  388. HANDLE  FAR PASCAL AllocResource(HANDLE, HANDLE, DWORD);
  389. WORD    FAR PASCAL SizeofResource(HANDLE, HANDLE);
  390. int     FAR PASCAL AccessResource(HANDLE, HANDLE);
  391.  
  392. #define MAKEINTRESOURCE(i)  (LPSTR)((DWORD)((WORD)(i)))
  393.  
  394. #ifndef NORESOURCE
  395.  
  396. #define DIFFERENCE  11
  397.  
  398. /* Predefined Resource Types */
  399. #define RT_CURSOR        MAKEINTRESOURCE(1)
  400. #define RT_BITMAP        MAKEINTRESOURCE(2)
  401. #define RT_ICON         MAKEINTRESOURCE(3)
  402. #define RT_MENU         MAKEINTRESOURCE(4)
  403. #define RT_DIALOG        MAKEINTRESOURCE(5)
  404. #define RT_STRING        MAKEINTRESOURCE(6)
  405. #define RT_FONTDIR        MAKEINTRESOURCE(7)
  406. #define RT_FONT         MAKEINTRESOURCE(8)
  407. #define RT_ACCELERATOR        MAKEINTRESOURCE(9)
  408. #define RT_RCDATA        MAKEINTRESOURCE(10)
  409. /* NOTE: if any new resource types are introduced above this point, then the 
  410. ** value of DIFFERENCE must be changed. 
  411. ** (RT_GROUP_CURSOR - RT_CURSOR) must always be equal to DIFFERENCE
  412. ** (RT_GROUP_ICON - RT_ICON) must always be equal to DIFFERENCE
  413. */
  414. #define RT_GROUP_CURSOR        (RT_CURSOR + DIFFERENCE)
  415. /* The value 13 is intentionally unused */
  416. #define RT_GROUP_ICON        (RT_ICON + DIFFERENCE)
  417.  
  418.  
  419. #endif /* NORESOURCE */
  420.  
  421. void   FAR PASCAL Yield(void);
  422. HANDLE FAR PASCAL GetCurrentTask(void);
  423.  
  424. WORD   FAR PASCAL AllocSelector(WORD);
  425. WORD   FAR PASCAL FreeSelector(WORD);
  426. WORD   FAR PASCAL AllocDStoCSAlias(WORD);
  427.  
  428. #ifndef NOATOM
  429. typedef WORD            ATOM;
  430.  
  431. #define MAKEINTATOM(i)        (LPSTR)((DWORD)((WORD)(i)))
  432.  
  433. BOOL   FAR PASCAL InitAtomTable(int);
  434. ATOM   FAR PASCAL AddAtom(LPSTR);
  435. ATOM   FAR PASCAL DeleteAtom(ATOM);
  436. ATOM   FAR PASCAL FindAtom(LPSTR);
  437. WORD   FAR PASCAL GetAtomName(ATOM, LPSTR, int);
  438. ATOM   FAR PASCAL GlobalAddAtom(LPSTR);
  439. ATOM   FAR PASCAL GlobalDeleteAtom(ATOM);
  440. ATOM   FAR PASCAL GlobalFindAtom(LPSTR);
  441. WORD   FAR PASCAL GlobalGetAtomName(ATOM, LPSTR, int);
  442. HANDLE FAR PASCAL GetAtomHandle(ATOM);
  443.  
  444. #endif /* NOATOM */
  445.  
  446. /* User Profile Routines */
  447. WORD FAR PASCAL GetProfileInt(LPSTR, LPSTR, int);
  448. int  FAR PASCAL GetProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int);
  449. BOOL FAR PASCAL WriteProfileString(LPSTR, LPSTR, LPSTR);
  450. WORD FAR PASCAL GetPrivateProfileInt(LPSTR, LPSTR, int, LPSTR);
  451. int  FAR PASCAL GetPrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int, LPSTR);
  452. BOOL FAR PASCAL WritePrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR);
  453.  
  454. WORD FAR PASCAL GetWindowsDirectory(LPSTR,WORD);
  455. WORD FAR PASCAL GetSystemDirectory(LPSTR,WORD);
  456.  
  457. /* Catch() and Throw() */
  458. typedef int            CATCHBUF[9];
  459. typedef int FAR         *LPCATCHBUF;
  460.  
  461. int  FAR PASCAL Catch(LPCATCHBUF);
  462. void FAR PASCAL Throw(LPCATCHBUF, int);
  463.  
  464. void FAR PASCAL FatalExit(int);
  465. void FAR PASCAL FatalAppExit(WORD, LPSTR);
  466.  
  467. void FAR PASCAL SwapRecording(WORD);
  468.  
  469. /* Character Translation Routines */
  470. int   FAR PASCAL AnsiToOem(LPSTR, LPSTR);
  471. BOOL  FAR PASCAL OemToAnsi(LPSTR, LPSTR);
  472. void  FAR PASCAL AnsiToOemBuff(LPSTR, LPSTR, int);
  473. void  FAR PASCAL OemToAnsiBuff(LPSTR, LPSTR, int);
  474. LPSTR FAR PASCAL AnsiUpper(LPSTR);
  475. WORD  FAR PASCAL AnsiUpperBuff(LPSTR, WORD);
  476. LPSTR FAR PASCAL AnsiLower(LPSTR);
  477. WORD  FAR PASCAL AnsiLowerBuff(LPSTR, WORD);
  478. LPSTR FAR PASCAL AnsiNext(LPSTR);
  479. LPSTR FAR PASCAL AnsiPrev(LPSTR, LPSTR);
  480.  
  481. #ifdef WIN31
  482. #ifndef NODBCS
  483. BOOL FAR PASCAL IsDBCSLeadByte( BYTE );
  484. #endif    /* NODBCS */
  485. #endif    /* WIN31 */
  486.  
  487. /* Keyboard Information Routines */
  488. #ifndef    NOKEYBOARDINFO
  489. DWORD FAR PASCAL OemKeyScan(WORD);
  490. WORD  FAR PASCAL VkKeyScan(WORD);
  491. int   FAR PASCAL GetKeyboardType(int);
  492. int   FAR PASCAL GetKBCodePage(void);
  493. int   FAR PASCAL GetKeyNameText(LONG, LPSTR, int);
  494. int   FAR PASCAL ToAscii(WORD wVirtKey, WORD wScanCode, LPSTR lpKeyState, LPVOID lpChar, WORD wFlags);
  495. #endif
  496.  
  497. #ifndef  NOLANGUAGE
  498. /* Language dependent Routines */
  499. BOOL  FAR  PASCAL IsCharAlpha(char);
  500. BOOL  FAR  PASCAL IsCharAlphaNumeric(char);
  501. BOOL  FAR  PASCAL IsCharUpper(char);
  502. BOOL  FAR  PASCAL IsCharLower(char);
  503. #endif
  504.  
  505. LONG FAR PASCAL GetWinFlags(void);
  506.  
  507. #define WF_PMODE    0x0001
  508. #define WF_CPU286    0x0002
  509. #define WF_CPU386    0x0004
  510. #define WF_CPU486    0x0008
  511. #define WF_STANDARD    0x0010
  512. #define WF_WIN286    0x0010
  513. #define WF_ENHANCED    0x0020
  514. #define WF_WIN386    0x0020
  515. #define WF_CPU086    0x0040
  516. #define WF_CPU186    0x0080
  517. #define WF_LARGEFRAME    0x0100
  518. #define WF_SMALLFRAME    0x0200
  519. #define WF_80x87    0x0400
  520. #define WF_PAGING    0x0800
  521. #define WF_WLO          0x8000
  522.                   
  523. /* WEP fSystemExit flag values */
  524. #define    WEP_SYSTEM_EXIT    1
  525. #define    WEP_FREE_DLL    0
  526.  
  527. LPSTR FAR PASCAL GetDOSEnvironment(void);
  528.  
  529. #ifdef OEMRESOURCE
  530.  
  531. /* OEM Resource Ordinal Numbers */
  532. #define OBM_CLOSE        32754
  533. #define OBM_UPARROW         32753
  534. #define OBM_DNARROW         32752
  535. #define OBM_RGARROW         32751
  536. #define OBM_LFARROW         32750
  537. #define OBM_REDUCE          32749
  538. #define OBM_ZOOM            32748
  539. #define OBM_RESTORE         32747
  540. #define OBM_REDUCED         32746
  541. #define OBM_ZOOMD           32745
  542. #define OBM_RESTORED        32744
  543. #define OBM_UPARROWD        32743
  544. #define OBM_DNARROWD        32742
  545. #define OBM_RGARROWD        32741
  546. #define OBM_LFARROWD        32740
  547. #define OBM_MNARROW         32739
  548. #define OBM_COMBO           32738
  549. #define OBM_UPARROWI        32737
  550. #define OBM_DNARROWI        32736
  551. #define OBM_RGARROWI        32735
  552. #define OBM_LFARROWI        32734
  553.  
  554. #define OBM_OLD_CLOSE       32767
  555. #define OBM_SIZE            32766
  556. #define OBM_OLD_UPARROW     32765
  557. #define OBM_OLD_DNARROW     32764
  558. #define OBM_OLD_RGARROW     32763
  559. #define OBM_OLD_LFARROW     32762
  560. #define OBM_BTSIZE          32761
  561. #define OBM_CHECK           32760
  562. #define OBM_CHECKBOXES      32759
  563. #define OBM_BTNCORNERS      32758
  564. #define OBM_OLD_REDUCE      32757
  565. #define OBM_OLD_ZOOM        32756
  566. #define OBM_OLD_RESTORE     32755
  567.  
  568. #define OCR_NORMAL        32512
  569. #define OCR_IBEAM        32513
  570. #define OCR_WAIT        32514
  571. #define OCR_CROSS        32515
  572. #define OCR_UP            32516
  573. #define OCR_SIZE        32640
  574. #define OCR_ICON        32641
  575. #define OCR_SIZENWSE        32642
  576. #define OCR_SIZENESW        32643
  577. #define OCR_SIZEWE        32644
  578. #define OCR_SIZENS        32645
  579. #define OCR_SIZEALL        32646
  580. #define OCR_ICOCUR        32647
  581.  
  582. #define OIC_SAMPLE        32512
  583. #define OIC_HAND        32513
  584. #define OIC_QUES        32514
  585. #define OIC_BANG        32515
  586. #define OIC_NOTE        32516
  587.  
  588. #endif /* OEMRESOURCE */
  589.  
  590. #endif /* NOKERNEL */
  591.  
  592. /*--------------------------------------------------------------------------*/
  593. /*  GDI Section                                 */
  594. /*--------------------------------------------------------------------------*/
  595.  
  596. #ifndef NOGDI
  597.  
  598. #ifndef NORASTEROPS
  599.  
  600. /* Binary raster ops */
  601. #define R2_BLACK        1    /*  0        */
  602. #define R2_NOTMERGEPEN        2    /* DPon        */
  603. #define R2_MASKNOTPEN        3    /* DPna        */
  604. #define R2_NOTCOPYPEN        4    /* PN        */
  605. #define R2_MASKPENNOT        5    /* PDna        */
  606. #define R2_NOT            6    /* Dn        */
  607. #define R2_XORPEN        7    /* DPx        */
  608. #define R2_NOTMASKPEN        8    /* DPan        */
  609. #define R2_MASKPEN        9    /* DPa        */
  610. #define R2_NOTXORPEN        10    /* DPxn     */
  611. #define R2_NOP            11    /* D        */
  612. #define R2_MERGENOTPEN        12    /* DPno     */
  613. #define R2_COPYPEN        13    /* P        */
  614. #define R2_MERGEPENNOT        14    /* PDno     */
  615. #define R2_MERGEPEN        15    /* DPo        */
  616. #define R2_WHITE        16    /*  1        */
  617.  
  618. /*  Ternary raster operations */
  619. #define SRCCOPY         (DWORD)0x00CC0020 /* dest = source             */
  620. #define SRCPAINT        (DWORD)0x00EE0086 /* dest = source OR dest         */
  621. #define SRCAND            (DWORD)0x008800C6 /* dest = source AND dest      */
  622. #define SRCINVERT        (DWORD)0x00660046 /* dest = source XOR dest      */
  623. #define SRCERASE        (DWORD)0x00440328 /* dest = source AND (NOT dest )     */
  624. #define NOTSRCCOPY        (DWORD)0x00330008 /* dest = (NOT source)         */
  625. #define NOTSRCERASE        (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
  626. #define MERGECOPY        (DWORD)0x00C000CA /* dest = (source AND pattern)     */
  627. #define MERGEPAINT        (DWORD)0x00BB0226 /* dest = (NOT source) OR dest     */
  628. #define PATCOPY         (DWORD)0x00F00021 /* dest = pattern          */
  629. #define PATPAINT        (DWORD)0x00FB0A09 /* dest = DPSnoo             */
  630. #define PATINVERT        (DWORD)0x005A0049 /* dest = pattern XOR dest     */
  631. #define DSTINVERT        (DWORD)0x00550009 /* dest = (NOT dest)         */
  632. #define BLACKNESS        (DWORD)0x00000042 /* dest = BLACK             */
  633. #define WHITENESS        (DWORD)0x00FF0062 /* dest = WHITE             */
  634.  
  635. #endif /* NORASTEROPS */
  636.  
  637. /* StretchBlt() Modes */
  638. #define BLACKONWHITE             1
  639. #define WHITEONBLACK             2
  640. #define COLORONCOLOR             3
  641.  
  642. /* PolyFill() Modes */
  643. #define ALTERNATE             1
  644. #define WINDING              2
  645.  
  646. /* Text Alignment Options */
  647. #define TA_NOUPDATECP             0
  648. #define TA_UPDATECP             1
  649.  
  650. #define TA_LEFT              0
  651. #define TA_RIGHT             2
  652. #define TA_CENTER             6
  653.  
  654. #define TA_TOP                 0
  655. #define TA_BOTTOM             8
  656. #define TA_BASELINE             24
  657.  
  658. #define ETO_GRAYED             1
  659. #define ETO_OPAQUE             2
  660. #define ETO_CLIPPED             4
  661.  
  662. #define ASPECT_FILTERING         0x0001
  663.  
  664. #ifndef NOMETAFILE
  665.  
  666. /* Metafile Functions */
  667. #define META_SETBKCOLOR             0x0201
  668. #define META_SETBKMODE             0x0102
  669. #define META_SETMAPMODE             0x0103
  670. #define META_SETROP2             0x0104
  671. #define META_SETRELABS             0x0105
  672. #define META_SETPOLYFILLMODE         0x0106
  673. #define META_SETSTRETCHBLTMODE         0x0107
  674. #define META_SETTEXTCHAREXTRA         0x0108
  675. #define META_SETTEXTCOLOR         0x0209
  676. #define META_SETTEXTJUSTIFICATION    0x020A
  677. #define META_SETWINDOWORG         0x020B
  678. #define META_SETWINDOWEXT         0x020C
  679. #define META_SETVIEWPORTORG         0x020D
  680. #define META_SETVIEWPORTEXT         0x020E
  681. #define META_OFFSETWINDOWORG         0x020F
  682. #define META_SCALEWINDOWEXT         0x0400
  683. #define META_OFFSETVIEWPORTORG         0x0211
  684. #define META_SCALEVIEWPORTEXT         0x0412
  685. #define META_LINETO             0x0213
  686. #define META_MOVETO             0x0214
  687. #define META_EXCLUDECLIPRECT         0x0415
  688. #define META_INTERSECTCLIPRECT         0x0416
  689. #define META_ARC             0x0817
  690. #define META_ELLIPSE             0x0418
  691. #define META_FLOODFILL             0x0419
  692. #define META_PIE             0x081A
  693. #define META_RECTANGLE             0x041B
  694. #define META_ROUNDRECT             0x061C
  695. #define META_PATBLT             0x061D
  696. #define META_SAVEDC             0x001E
  697. #define META_SETPIXEL             0x041F
  698. #define META_OFFSETCLIPRGN         0x0220
  699. #define META_TEXTOUT             0x0521
  700. #define META_BITBLT             0x0922
  701. #define META_STRETCHBLT             0x0B23
  702. #define META_POLYGON             0x0324
  703. #define META_POLYLINE             0x0325
  704. #define META_ESCAPE             0x0626
  705. #define META_RESTOREDC             0x0127
  706. #define META_FILLREGION             0x0228
  707. #define META_FRAMEREGION         0x0429
  708. #define META_INVERTREGION         0x012A
  709. #define META_PAINTREGION         0x012B
  710. #define META_SELECTCLIPREGION         0x012C
  711. #define META_SELECTOBJECT         0x012D
  712. #define META_SETTEXTALIGN         0x012E
  713. #define META_DRAWTEXT             0x062F
  714.  
  715. #define    META_CHORD             0x0830
  716. #define    META_SETMAPPERFLAGS         0x0231
  717. #define    META_EXTTEXTOUT             0x0a32 
  718. #define    META_SETDIBTODEV         0x0d33
  719. #define    META_SELECTPALETTE         0x0234
  720. #define    META_REALIZEPALETTE         0x0035
  721. #define    META_ANIMATEPALETTE         0x0436
  722. #define    META_SETPALENTRIES         0x0037
  723. #define    META_POLYPOLYGON         0x0538
  724. #define    META_RESIZEPALETTE         0x0139
  725.  
  726. #define    META_DIBBITBLT             0x0940
  727. #define    META_DIBSTRETCHBLT         0x0b41
  728. #define    META_DIBCREATEPATTERNBRUSH   0x0142
  729. #define    META_STRETCHDIB             0x0f43
  730.  
  731. #define    META_DELETEOBJECT         0x01f0
  732.  
  733. #define    META_CREATEPALETTE         0x00f7
  734. #define META_CREATEBRUSH         0x00F8
  735. #define META_CREATEPATTERNBRUSH         0x01F9
  736. #define META_CREATEPENINDIRECT         0x02FA
  737. #define META_CREATEFONTINDIRECT         0x02FB
  738. #define META_CREATEBRUSHINDIRECT     0x02FC
  739. #define META_CREATEBITMAPINDIRECT    0x02FD
  740. #define META_CREATEBITMAP         0x06FE
  741. #define META_CREATEREGION         0x06FF
  742.  
  743. #endif /* NOMETAFILE */
  744.  
  745. /* GDI Escapes */
  746. #define NEWFRAME             1
  747. #define ABORTDOC             2
  748. #define NEXTBAND             3
  749. #define SETCOLORTABLE             4
  750. #define GETCOLORTABLE             5
  751. #define FLUSHOUTPUT             6
  752. #define DRAFTMODE             7
  753. #define QUERYESCSUPPORT          8
  754. #define SETABORTPROC             9
  755. #define STARTDOC             10
  756. #define ENDDOC                 11
  757. #define GETPHYSPAGESIZE          12
  758. #define GETPRINTINGOFFSET         13
  759. #define GETSCALINGFACTOR         14
  760. #define MFCOMMENT             15
  761. #define GETPENWIDTH             16
  762. #define SETCOPYCOUNT             17
  763. #define SELECTPAPERSOURCE         18
  764. #define DEVICEDATA             19
  765. #define PASSTHROUGH             19
  766. #define GETTECHNOLGY             20
  767. #define GETTECHNOLOGY             20
  768. #define SETENDCAP             21
  769. #define SETLINEJOIN             22
  770. #define SETMITERLIMIT             23
  771. #define BANDINFO             24
  772. #define DRAWPATTERNRECT          25
  773. #define GETVECTORPENSIZE         26
  774. #define GETVECTORBRUSHSIZE         27
  775. #define ENABLEDUPLEX             28
  776. #define GETSETPAPERBINS          29
  777. #define GETSETPRINTORIENT         30
  778. #define ENUMPAPERBINS             31
  779. #define SETDIBSCALING             32
  780. #define EPSPRINTING                 33
  781. #define ENUMPAPERMETRICS            34
  782. #define GETSETPAPERMETRICS          35
  783. #define POSTSCRIPT_DATA             37
  784. #define POSTSCRIPT_IGNORE         38
  785. #define GETEXTENDEDTEXTMETRICS         256
  786. #define GETEXTENTTABLE             257
  787. #define GETPAIRKERNTABLE         258
  788. #define GETTRACKKERNTABLE         259
  789. #define EXTTEXTOUT             512
  790. #define ENABLERELATIVEWIDTHS         768
  791. #define ENABLEPAIRKERNING         769
  792. #define SETKERNTRACK             770
  793. #define SETALLJUSTVALUES         771
  794. #define SETCHARSET             772
  795.  
  796. #define STRETCHBLT             2048
  797. #define BEGIN_PATH             4096
  798. #define CLIP_TO_PATH             4097
  799. #define END_PATH             4098
  800. #define EXT_DEVICE_CAPS             4099
  801. #define RESTORE_CTM             4100
  802. #define SAVE_CTM                 4101
  803. #define SET_ARC_DIRECTION         4102
  804. #define SET_BACKGROUND_COLOR         4103
  805. #define SET_POLY_MODE             4104
  806. #define SET_SCREEN_ANGLE         4105
  807. #define SET_SPREAD             4106
  808. #define TRANSFORM_CTM             4107
  809. #define SET_CLIP_BOX             4108
  810. #define SET_BOUNDS                   4109
  811.  
  812. /* Spooler Error Codes */
  813. #define SP_NOTREPORTED             0x4000
  814. #define SP_ERROR             (-1)
  815. #define SP_APPABORT             (-2)
  816. #define SP_USERABORT             (-3)
  817. #define SP_OUTOFDISK             (-4)
  818. #define SP_OUTOFMEMORY             (-5)
  819.  
  820. #define PR_JOBSTATUS             0x0000
  821.  
  822. /* Object Definitions for EnumObjects() */
  823. #define OBJ_PEN              1
  824. #define OBJ_BRUSH             2
  825.  
  826. /* Bitmap Header Definition */
  827. typedef struct tagBITMAP
  828.   {
  829.     int     bmType;
  830.     int     bmWidth;
  831.     int     bmHeight;
  832.     int     bmWidthBytes;
  833.     BYTE    bmPlanes;
  834.     BYTE    bmBitsPixel;
  835.     LPSTR    bmBits;
  836.   } BITMAP;
  837. typedef BITMAP            *PBITMAP;
  838. typedef BITMAP NEAR        *NPBITMAP;
  839. typedef BITMAP FAR        *LPBITMAP;
  840.  
  841. typedef struct tagRGBTRIPLE {
  842.     BYTE    rgbtBlue;
  843.     BYTE    rgbtGreen;
  844.     BYTE    rgbtRed;
  845. } RGBTRIPLE;
  846.  
  847. typedef struct tagRGBQUAD {
  848.     BYTE    rgbBlue;
  849.     BYTE    rgbGreen;
  850.     BYTE    rgbRed;
  851.     BYTE    rgbReserved;
  852. } RGBQUAD;
  853.  
  854. /* structures for defining DIBs */
  855. typedef struct tagBITMAPCOREHEADER {
  856.     DWORD    bcSize;            /* used to get to color table */
  857.     WORD    bcWidth;
  858.     WORD    bcHeight;
  859.     WORD    bcPlanes;
  860.     WORD    bcBitCount;
  861. } BITMAPCOREHEADER;
  862. typedef BITMAPCOREHEADER FAR *LPBITMAPCOREHEADER;
  863. typedef BITMAPCOREHEADER *PBITMAPCOREHEADER;
  864.  
  865.  
  866. typedef struct tagBITMAPINFOHEADER{
  867.       DWORD       biSize;
  868.       DWORD       biWidth;
  869.       DWORD       biHeight;
  870.       WORD       biPlanes;
  871.       WORD       biBitCount;
  872.  
  873.     DWORD       biCompression;
  874.     DWORD       biSizeImage;
  875.     DWORD       biXPelsPerMeter;
  876.     DWORD       biYPelsPerMeter;
  877.     DWORD       biClrUsed;
  878.     DWORD       biClrImportant;
  879. } BITMAPINFOHEADER;
  880.  
  881. typedef BITMAPINFOHEADER FAR *LPBITMAPINFOHEADER;
  882. typedef BITMAPINFOHEADER *PBITMAPINFOHEADER;
  883.  
  884. /* constants for the biCompression field */
  885. #define BI_RGB      0L
  886. #define BI_RLE8     1L
  887. #define BI_RLE4     2L
  888.  
  889. typedef struct tagBITMAPINFO { 
  890.     BITMAPINFOHEADER    bmiHeader;
  891.     RGBQUAD        bmiColors[1];
  892. } BITMAPINFO;
  893. typedef BITMAPINFO FAR *LPBITMAPINFO;
  894. typedef BITMAPINFO *PBITMAPINFO;
  895.  
  896. typedef struct tagBITMAPCOREINFO { 
  897.     BITMAPCOREHEADER    bmciHeader;
  898.     RGBTRIPLE        bmciColors[1];
  899. } BITMAPCOREINFO;
  900. typedef BITMAPCOREINFO FAR *LPBITMAPCOREINFO;
  901. typedef BITMAPCOREINFO *PBITMAPCOREINFO;
  902.  
  903. typedef struct tagBITMAPFILEHEADER {
  904.     WORD    bfType;
  905.     DWORD    bfSize;
  906.         WORD    bfReserved1;
  907.         WORD    bfReserved2;
  908.     DWORD    bfOffBits;
  909. } BITMAPFILEHEADER;
  910. typedef BITMAPFILEHEADER FAR *LPBITMAPFILEHEADER;
  911. typedef BITMAPFILEHEADER *PBITMAPFILEHEADER;
  912.  
  913.  
  914. #define MAKEPOINT(l)        (*((POINT FAR *)&(l)))
  915.  
  916. #ifndef NOMETAFILE
  917.  
  918. /* Clipboard Metafile Picture Structure */
  919. typedef struct tagHANDLETABLE
  920.   {
  921.     HANDLE    objectHandle[1];
  922.   } HANDLETABLE;
  923. typedef HANDLETABLE        *PHANDLETABLE;
  924. typedef HANDLETABLE FAR     *LPHANDLETABLE;
  925.  
  926. typedef struct tagMETARECORD
  927.   {
  928.     DWORD    rdSize;
  929.     WORD    rdFunction;
  930.     WORD    rdParm[1];
  931.   } METARECORD;
  932. typedef METARECORD        *PMETARECORD;
  933. typedef METARECORD FAR        *LPMETARECORD;
  934.  
  935. typedef struct tagMETAFILEPICT
  936.   {
  937.     int     mm;
  938.     int     xExt;
  939.     int     yExt;
  940.     HANDLE    hMF;
  941.   } METAFILEPICT;
  942. typedef METAFILEPICT FAR    *LPMETAFILEPICT;
  943.  
  944. typedef struct tagMETAHEADER
  945. {
  946.     WORD    mtType;
  947.     WORD    mtHeaderSize;
  948.     WORD    mtVersion;
  949.     DWORD    mtSize;
  950.     WORD    mtNoObjects;
  951.     DWORD    mtMaxRecord;
  952.     WORD    mtNoParameters;
  953. } METAHEADER;
  954.  
  955. #endif /* NOMETAFILE */
  956.  
  957. #ifndef NOTEXTMETRIC
  958.  
  959. typedef struct tagTEXTMETRIC
  960.   {
  961.     int     tmHeight;
  962.     int     tmAscent;
  963.     int     tmDescent;
  964.     int     tmInternalLeading;
  965.     int     tmExternalLeading;
  966.     int     tmAveCharWidth;
  967.     int     tmMaxCharWidth;
  968.     int     tmWeight;
  969.     BYTE    tmItalic;
  970.     BYTE    tmUnderlined;
  971.     BYTE    tmStruckOut;
  972.     BYTE    tmFirstChar;
  973.     BYTE    tmLastChar;
  974.     BYTE    tmDefaultChar;
  975.     BYTE    tmBreakChar;
  976.     BYTE    tmPitchAndFamily;
  977.     BYTE    tmCharSet;
  978.     int     tmOverhang;
  979.     int     tmDigitizedAspectX;
  980.     int     tmDigitizedAspectY;
  981.   } TEXTMETRIC;
  982. typedef TEXTMETRIC        *PTEXTMETRIC;
  983. typedef TEXTMETRIC NEAR     *NPTEXTMETRIC;
  984. typedef TEXTMETRIC FAR        *LPTEXTMETRIC;
  985.  
  986. #endif /* NOTEXTMETRIC */
  987.  
  988. /* GDI Logical Objects: */
  989.  
  990. /* Pel Array */
  991. typedef struct tagPELARRAY
  992.   {
  993.     int     paXCount;
  994.     int     paYCount;
  995.     int     paXExt;
  996.     int     paYExt;
  997.     BYTE    paRGBs;
  998.   } PELARRAY;
  999. typedef PELARRAY        *PPELARRAY;
  1000. typedef PELARRAY NEAR        *NPPELARRAY;
  1001. typedef PELARRAY FAR        *LPPELARRAY;
  1002.  
  1003. /* Logical Brush (or Pattern) */
  1004. typedef struct tagLOGBRUSH
  1005.   {
  1006.     WORD    lbStyle;
  1007.     DWORD    lbColor;
  1008.     int       lbHatch;
  1009.   } LOGBRUSH;
  1010. typedef LOGBRUSH        *PLOGBRUSH;
  1011. typedef LOGBRUSH NEAR        *NPLOGBRUSH;
  1012. typedef LOGBRUSH FAR        *LPLOGBRUSH;
  1013.  
  1014. typedef LOGBRUSH        PATTERN;
  1015. typedef PATTERN         *PPATTERN;
  1016. typedef PATTERN NEAR        *NPPATTERN;
  1017. typedef PATTERN FAR        *LPPATTERN;
  1018.  
  1019. /* Logical Pen */
  1020. typedef struct tagLOGPEN
  1021.   {
  1022.     WORD    lopnStyle;
  1023.     POINT    lopnWidth;
  1024.     DWORD    lopnColor;
  1025.   } LOGPEN;
  1026. typedef LOGPEN            *PLOGPEN;
  1027. typedef LOGPEN NEAR        *NPLOGPEN;
  1028. typedef LOGPEN FAR        *LPLOGPEN;
  1029.  
  1030.  
  1031.  
  1032. typedef struct tagPALETTEENTRY {
  1033.     BYTE    peRed;
  1034.     BYTE    peGreen;
  1035.     BYTE    peBlue;
  1036.     BYTE    peFlags;
  1037. } PALETTEENTRY;
  1038. typedef PALETTEENTRY FAR  *LPPALETTEENTRY;
  1039.  
  1040. /* Logical Palette */
  1041. typedef struct tagLOGPALETTE {
  1042.     WORD    palVersion;
  1043.     WORD    palNumEntries;
  1044.     PALETTEENTRY    palPalEntry[1];
  1045. } LOGPALETTE;
  1046. typedef LOGPALETTE        *PLOGPALETTE;
  1047. typedef LOGPALETTE NEAR        *NPLOGPALETTE;
  1048. typedef LOGPALETTE FAR        *LPLOGPALETTE;
  1049.  
  1050.  
  1051. /* Logical Font */
  1052. #define LF_FACESIZE        32
  1053.  
  1054. typedef struct tagLOGFONT
  1055.   {
  1056.     int       lfHeight;
  1057.     int       lfWidth;
  1058.     int       lfEscapement;
  1059.     int       lfOrientation;
  1060.     int       lfWeight;
  1061.     BYTE      lfItalic;
  1062.     BYTE      lfUnderline;
  1063.     BYTE      lfStrikeOut;
  1064.     BYTE      lfCharSet;
  1065.     BYTE      lfOutPrecision;
  1066.     BYTE      lfClipPrecision;
  1067.     BYTE      lfQuality;
  1068.     BYTE      lfPitchAndFamily;
  1069.     BYTE      lfFaceName[LF_FACESIZE];
  1070.   } LOGFONT;
  1071. typedef LOGFONT         *PLOGFONT;
  1072. typedef LOGFONT NEAR        *NPLOGFONT;
  1073. typedef LOGFONT FAR        *LPLOGFONT;
  1074.  
  1075. #define OUT_DEFAULT_PRECIS    0
  1076. #define OUT_STRING_PRECIS    1
  1077. #define OUT_CHARACTER_PRECIS    2
  1078. #define OUT_STROKE_PRECIS    3
  1079.  
  1080. #define CLIP_DEFAULT_PRECIS    0
  1081. #define CLIP_CHARACTER_PRECIS    1
  1082. #define CLIP_STROKE_PRECIS    2
  1083.  
  1084. #define DEFAULT_QUALITY     0
  1085. #define DRAFT_QUALITY        1
  1086. #define PROOF_QUALITY        2
  1087.  
  1088. #define DEFAULT_PITCH        0
  1089. #define FIXED_PITCH        1
  1090. #define VARIABLE_PITCH        2
  1091.  
  1092. #define ANSI_CHARSET        0
  1093. #define SYMBOL_CHARSET        2
  1094. #define SHIFTJIS_CHARSET    128
  1095. #define OEM_CHARSET        255
  1096.  
  1097. /* Font Families */
  1098. #define FF_DONTCARE        (0<<4)  /* Don't care or don't know. */
  1099. #define FF_ROMAN        (1<<4)  /* Variable stroke width, serifed. */
  1100.                     /* Times Roman, Century Schoolbook, etc. */
  1101. #define FF_SWISS        (2<<4)  /* Variable stroke width, sans-serifed. */
  1102.                     /* Helvetica, Swiss, etc. */
  1103. #define FF_MODERN        (3<<4)  /* Constant stroke width, serifed or sans-serifed. */
  1104.                     /* Pica, Elite, Courier, etc. */
  1105. #define FF_SCRIPT        (4<<4)  /* Cursive, etc. */
  1106. #define FF_DECORATIVE        (5<<4)  /* Old English, etc. */
  1107.  
  1108. /* Font Weights */
  1109. #define FW_DONTCARE        0
  1110. #define FW_THIN         100
  1111. #define FW_EXTRALIGHT        200
  1112. #define FW_LIGHT        300
  1113. #define FW_NORMAL        400
  1114. #define FW_MEDIUM        500
  1115. #define FW_SEMIBOLD        600
  1116. #define FW_BOLD         700
  1117. #define FW_EXTRABOLD        800
  1118. #define FW_HEAVY        900
  1119.  
  1120. #define FW_ULTRALIGHT        FW_EXTRALIGHT
  1121. #define FW_REGULAR        FW_NORMAL
  1122. #define FW_DEMIBOLD        FW_SEMIBOLD
  1123. #define FW_ULTRABOLD        FW_EXTRABOLD
  1124. #define FW_BLACK        FW_HEAVY
  1125.  
  1126. /* EnumFonts Masks */
  1127. #define RASTER_FONTTYPE     0x0001
  1128. #define DEVICE_FONTTYPE     0X0002
  1129. #define SCALABLE_FONTTYPE   0x0004
  1130.  
  1131. #define RGB(r,g,b)          ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  1132. #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
  1133. #define PALETTEINDEX(i)     ((DWORD)(0x01000000 | (WORD)(i)))
  1134.  
  1135. #define GetRValue(rgb)        ((BYTE)(rgb))
  1136. #define GetGValue(rgb)        ((BYTE)(((WORD)(rgb)) >> 8))
  1137. #define GetBValue(rgb)        ((BYTE)((rgb)>>16))
  1138.  
  1139. /* Background Modes */
  1140. #define TRANSPARENT        1
  1141. #define OPAQUE            2
  1142.  
  1143. /* Mapping Modes */
  1144. #define MM_TEXT            1
  1145. #define MM_LOMETRIC        2
  1146. #define MM_HIMETRIC        3
  1147. #define MM_LOENGLISH        4
  1148. #define MM_HIENGLISH        5
  1149. #define MM_TWIPS        6
  1150. #define MM_ISOTROPIC        7
  1151. #define MM_ANISOTROPIC        8
  1152.  
  1153. /* Coordinate Modes */
  1154. #define ABSOLUTE        1
  1155. #define RELATIVE        2
  1156.  
  1157. /* Stock Logical Objects */
  1158. #define WHITE_BRUSH        0
  1159. #define LTGRAY_BRUSH        1
  1160. #define GRAY_BRUSH        2
  1161. #define DKGRAY_BRUSH        3
  1162. #define BLACK_BRUSH        4
  1163. #define NULL_BRUSH        5
  1164. #define HOLLOW_BRUSH        NULL_BRUSH
  1165. #define WHITE_PEN        6
  1166. #define BLACK_PEN        7
  1167. #define NULL_PEN        8
  1168. #define OEM_FIXED_FONT        10
  1169. #define ANSI_FIXED_FONT     11
  1170. #define ANSI_VAR_FONT        12
  1171. #define SYSTEM_FONT        13
  1172. #define DEVICE_DEFAULT_FONT 14
  1173. #define DEFAULT_PALETTE     15
  1174. #define SYSTEM_FIXED_FONT   16
  1175.  
  1176. /* Brush Styles */
  1177. #define BS_SOLID        0
  1178. #define BS_NULL            1
  1179. #define BS_HOLLOW        BS_NULL
  1180. #define BS_HATCHED        2
  1181. #define BS_PATTERN        3
  1182. #define BS_INDEXED        4
  1183. #define    BS_DIBPATTERN        5
  1184.  
  1185. /* Hatch Styles */
  1186. #define HS_HORIZONTAL        0        /* ----- */
  1187. #define HS_VERTICAL        1        /* ||||| */
  1188. #define HS_FDIAGONAL        2        /* \\\\\ */
  1189. #define HS_BDIAGONAL        3        /* ///// */
  1190. #define HS_CROSS        4        /* +++++ */
  1191. #define HS_DIAGCROSS        5        /* xxxxx */
  1192.  
  1193. /* Pen Styles */
  1194. #define PS_SOLID        0
  1195. #define PS_DASH            1        /* -------    */
  1196. #define PS_DOT            2        /* .......    */
  1197. #define PS_DASHDOT        3        /* _._._._    */
  1198. #define PS_DASHDOTDOT        4        /* _.._.._    */
  1199. #define PS_NULL         5
  1200. #define PS_INSIDEFRAME         6
  1201.  
  1202. /* Device Parameters for GetDeviceCaps() */
  1203. #define DRIVERVERSION 0     /* Device driver version            */
  1204. #define TECHNOLOGY    2     /* Device classification            */
  1205. #define HORZSIZE      4     /* Horizontal size in millimeters        */
  1206. #define VERTSIZE      6     /* Vertical size in millimeters        */
  1207. #define HORZRES       8     /* Horizontal width in pixels        */
  1208. #define VERTRES       10    /* Vertical width in pixels         */
  1209. #define BITSPIXEL     12    /* Number of bits per pixel         */
  1210. #define PLANES          14    /* Number of planes             */
  1211. #define NUMBRUSHES    16    /* Number of brushes the device has     */
  1212. #define NUMPENS       18    /* Number of pens the device has        */
  1213. #define NUMMARKERS    20    /* Number of markers the device has     */
  1214. #define NUMFONTS      22    /* Number of fonts the device has        */
  1215. #define NUMCOLORS     24    /* Number of colors the device supports    */
  1216. #define PDEVICESIZE   26    /* Size required for device descriptor    */
  1217. #define CURVECAPS     28    /* Curve capabilities            */
  1218. #define LINECAPS      30    /* Line capabilities            */
  1219. #define POLYGONALCAPS 32    /* Polygonal capabilities            */
  1220. #define TEXTCAPS      34    /* Text capabilities            */
  1221. #define CLIPCAPS      36    /* Clipping capabilities            */
  1222. #define RASTERCAPS    38    /* Bitblt capabilities            */
  1223. #define ASPECTX       40    /* Length of the X leg            */
  1224. #define ASPECTY       42    /* Length of the Y leg            */
  1225. #define ASPECTXY      44    /* Length of the hypotenuse         */
  1226.  
  1227. #define LOGPIXELSX    88    /* Logical pixels/inch in X         */
  1228. #define LOGPIXELSY    90    /* Logical pixels/inch in Y         */
  1229.  
  1230. #define SIZEPALETTE  104    /* Number of entries in physical palette    */
  1231. #define NUMRESERVED  106    /* Number of reserved entries in palette    */
  1232. #define COLORRES     108    /* Actual color resolution             */
  1233.  
  1234. #ifndef NOGDICAPMASKS
  1235.  
  1236. /* Device Capability Masks: */
  1237.  
  1238. /* Device Technologies */
  1239. #define DT_PLOTTER        0    /* Vector plotter            */
  1240. #define DT_RASDISPLAY        1    /* Raster display            */
  1241. #define DT_RASPRINTER        2    /* Raster printer            */
  1242. #define DT_RASCAMERA        3    /* Raster camera            */
  1243. #define DT_CHARSTREAM        4    /* Character-stream, PLP        */
  1244. #define DT_METAFILE        5    /* Metafile, VDM            */
  1245. #define DT_DISPFILE        6    /* Display-file             */
  1246.  
  1247. /* Curve Capabilities */
  1248. #define CC_NONE         0    /* Curves not supported         */
  1249. #define CC_CIRCLES        1    /* Can do circles            */
  1250. #define CC_PIE            2    /* Can do pie wedges            */
  1251. #define CC_CHORD        4    /* Can do chord arcs            */
  1252. #define CC_ELLIPSES        8    /* Can do ellipese            */
  1253. #define CC_WIDE         16    /* Can do wide lines            */
  1254. #define CC_STYLED        32    /* Can do styled lines            */
  1255. #define CC_WIDESTYLED        64    /* Can do wide styled lines        */
  1256. #define CC_INTERIORS        128 /* Can do interiors            */
  1257.  
  1258. /* Line Capabilities */
  1259. #define LC_NONE         0    /* Lines not supported            */
  1260. #define LC_POLYLINE        2    /* Can do polylines            */
  1261. #define LC_MARKER        4    /* Can do markers            */
  1262. #define LC_POLYMARKER        8    /* Can do polymarkers            */
  1263. #define LC_WIDE         16    /* Can do wide lines            */
  1264. #define LC_STYLED        32    /* Can do styled lines            */
  1265. #define LC_WIDESTYLED        64    /* Can do wide styled lines        */
  1266. #define LC_INTERIORS        128 /* Can do interiors            */
  1267.  
  1268. /* Polygonal Capabilities */
  1269. #define PC_NONE         0    /* Polygonals not supported        */
  1270. #define PC_POLYGON        1    /* Can do polygons            */
  1271. #define PC_RECTANGLE        2    /* Can do rectangles            */
  1272. #define PC_WINDPOLYGON        4    /* Can do winding polygons        */
  1273. #define PC_TRAPEZOID        4    /* Can do trapezoids            */
  1274. #define PC_SCANLINE        8    /* Can do scanlines            */
  1275. #define PC_WIDE         16    /* Can do wide borders            */
  1276. #define PC_STYLED        32    /* Can do styled borders        */
  1277. #define PC_WIDESTYLED        64    /* Can do wide styled borders        */
  1278. #define PC_INTERIORS        128 /* Can do interiors            */
  1279.  
  1280. /* Polygonal Capabilities */
  1281. #define CP_NONE         0    /* No clipping of output        */
  1282. #define CP_RECTANGLE        1    /* Output clipped to rects        */
  1283.  
  1284. /* Text Capabilities */
  1285. #define TC_OP_CHARACTER     0x0001  /* Can do OutputPrecision    CHARACTER      */
  1286. #define TC_OP_STROKE        0x0002  /* Can do OutputPrecision    STROKE           */
  1287. #define TC_CP_STROKE        0x0004  /* Can do ClipPrecision    STROKE           */
  1288. #define TC_CR_90        0x0008  /* Can do CharRotAbility    90           */
  1289. #define TC_CR_ANY        0x0010  /* Can do CharRotAbility    ANY           */
  1290. #define TC_SF_X_YINDEP        0x0020  /* Can do ScaleFreedom    X_YINDEPENDENT */
  1291. #define TC_SA_DOUBLE        0x0040  /* Can do ScaleAbility    DOUBLE           */
  1292. #define TC_SA_INTEGER        0x0080  /* Can do ScaleAbility    INTEGER        */
  1293. #define TC_SA_CONTIN        0x0100  /* Can do ScaleAbility    CONTINUOUS     */
  1294. #define TC_EA_DOUBLE        0x0200  /* Can do EmboldenAbility    DOUBLE           */
  1295. #define TC_IA_ABLE        0x0400  /* Can do ItalisizeAbility    ABLE           */
  1296. #define TC_UA_ABLE        0x0800  /* Can do UnderlineAbility    ABLE           */
  1297. #define TC_SO_ABLE        0x1000  /* Can do StrikeOutAbility    ABLE           */
  1298. #define TC_RA_ABLE        0x2000  /* Can do RasterFontAble    ABLE           */
  1299. #define TC_VA_ABLE        0x4000  /* Can do VectorFontAble    ABLE           */
  1300. #define TC_RESERVED        0x8000
  1301.  
  1302. #endif /* NOGDICAPMASKS */
  1303.  
  1304. /* Raster Capabilities */
  1305. #define RC_BITBLT        1        /* Can do standard BLT.        */
  1306. #define RC_BANDING        2        /* Device requires banding support    */
  1307. #define RC_SCALING        4        /* Device requires scaling support    */
  1308. #define RC_BITMAP64        8        /* Device can support >64K bitmap    */
  1309. #define    RC_GDI20_OUTPUT        0x0010    /* has 2.0 output calls         */
  1310. #define    RC_DI_BITMAP        0x0080    /* supports DIB to memory    */
  1311. #define    RC_PALETTE        0x0100    /* supports a palette        */
  1312. #define    RC_DIBTODEV        0x0200    /* supports DIBitsToDevice    */
  1313. #define    RC_BIGFONT        0x0400    /* supports >64K fonts        */
  1314. #define    RC_STRETCHBLT        0x0800    /* supports StretchBlt        */
  1315. #define    RC_FLOODFILL        0x1000    /* supports FloodFill        */
  1316. #define    RC_STRETCHDIB        0x2000    /* supports StretchDIBits    */
  1317.  
  1318.  
  1319. /* palette entry flags */
  1320.  
  1321. #define PC_RESERVED    0x01    /* palette index used for animation */
  1322. #define PC_EXPLICIT    0x02    /* palette index is explicit to device */
  1323. #define    PC_NOCOLLAPSE    0x04    /* do not match color to system palette */
  1324.  
  1325. /* DIB color table identifiers */
  1326.  
  1327. #define    DIB_RGB_COLORS    0    /* color table in RGBTriples */
  1328. #define    DIB_PAL_COLORS    1    /* color table in palette indices */
  1329.  
  1330. /* constants for Get/SetSystemPaletteUse() */
  1331.  
  1332. #define    SYSPAL_STATIC    1
  1333. #define    SYSPAL_NOSTATIC 2
  1334.  
  1335. /* constants for CreateDIBitmap */
  1336. #define    CBM_INIT    0x04L    /* initialize bitmap */
  1337.  
  1338. #ifndef NODRAWTEXT
  1339.  
  1340. /* DrawText() Format Flags */
  1341. #define DT_TOP            0x0000
  1342. #define DT_LEFT         0x0000
  1343. #define DT_CENTER        0x0001
  1344. #define DT_RIGHT        0x0002
  1345. #define DT_VCENTER        0x0004
  1346. #define DT_BOTTOM        0x0008
  1347. #define DT_WORDBREAK        0x0010
  1348. #define DT_SINGLELINE        0x0020
  1349. #define DT_EXPANDTABS        0x0040
  1350. #define DT_TABSTOP        0x0080
  1351. #define DT_NOCLIP        0x0100
  1352. #define DT_EXTERNALLEADING  0x0200
  1353. #define DT_CALCRECT        0x0400
  1354. #define DT_NOPREFIX        0x0800
  1355. #define DT_INTERNAL        0x1000
  1356.  
  1357. int  FAR PASCAL DrawText(HDC, LPSTR, int, LPRECT, WORD);
  1358. BOOL FAR PASCAL DrawIcon(HDC, int, int, HICON);
  1359.  
  1360. #endif /* NODRAWTEXT */
  1361.  
  1362. /* ExtFloodFill style flags */
  1363. #define  FLOODFILLBORDER   0
  1364. #define  FLOODFILLSURFACE  1
  1365.  
  1366. HDC   FAR PASCAL GetWindowDC(HWND);
  1367. HDC   FAR PASCAL GetDC(HWND);
  1368. int   FAR PASCAL ReleaseDC(HWND, HDC);
  1369.  
  1370. #ifdef WIN31
  1371.  
  1372. HDC FAR PASCAL GetDCEx(register HWND hwnd, HRGN hrgnClip, DWORD flags);
  1373.  
  1374. /* GetDCEx() flags */
  1375. #define DCX_WINDOW        0x00000001L
  1376. #define DCX_CACHE        0x00000002L
  1377. #define DCX_NORESETATTRS    0x00000004L
  1378. #define DCX_CLIPCHILDREN    0x00000008L
  1379. #define DCX_CLIPSIBLINGS    0x00000010L
  1380. #define DCX_PARENTCLIP        0x00000020L
  1381.  
  1382. #define DCX_EXCLUDERGN        0x00000040L
  1383. #define DCX_INTERSECTRGN    0x00000080L
  1384.  
  1385. #define DCX_EXCLUDEUPDATE   0x00000100L
  1386. #define DCX_INTERSECTUPDATE 0x00000200L
  1387.  
  1388. #define DCX_LOCKWINDOWUPDATE 0x00000400L
  1389.  
  1390. #define DCX_MEMORY        0x00004000L
  1391.  
  1392. #define DCX_USESTYLE        0x00010000L
  1393. #define DCX_NORECOMPUTE     0x00100000L
  1394. #define DCX_VALIDATE        0x00200000L
  1395.  
  1396.  
  1397. #endif    /* WIN31 */
  1398.  
  1399.  
  1400. HDC   FAR PASCAL CreateDC(LPSTR, LPSTR, LPSTR, LPVOID);
  1401. HDC   FAR PASCAL CreateIC(LPSTR, LPSTR, LPSTR, LPVOID);
  1402. HDC   FAR PASCAL CreateCompatibleDC(HDC);
  1403. BOOL  FAR PASCAL DeleteDC(HDC);
  1404. int   FAR PASCAL SaveDC(HDC);
  1405. BOOL  FAR PASCAL RestoreDC(HDC, int);
  1406. DWORD FAR PASCAL MoveTo(HDC, int, int);
  1407. DWORD FAR PASCAL GetCurrentPosition(HDC);
  1408. BOOL  FAR PASCAL LineTo(HDC, int, int);
  1409. DWORD FAR PASCAL GetDCOrg(HDC);
  1410.  
  1411. int   FAR PASCAL MulDiv(int, int, int);
  1412.  
  1413. BOOL FAR PASCAL ExtTextOut(HDC, int, int, WORD, LPRECT, LPSTR, WORD, LPINT);
  1414.  
  1415. BOOL FAR PASCAL Polyline(HDC, LPPOINT, int);
  1416. BOOL FAR PASCAL Polygon(HDC, LPPOINT, int);
  1417. BOOL FAR PASCAL PolyPolygon(HDC, LPPOINT, LPINT, int);
  1418.  
  1419. BOOL  FAR PASCAL Rectangle(HDC, int, int, int, int);
  1420. BOOL  FAR PASCAL RoundRect(HDC, int, int, int, int, int, int);
  1421. BOOL  FAR PASCAL Ellipse(HDC, int, int, int, int);
  1422. BOOL  FAR PASCAL Arc(HDC, int, int, int, int, int, int, int, int);
  1423. BOOL  FAR PASCAL Chord(HDC, int, int, int, int, int, int, int, int);
  1424. BOOL  FAR PASCAL Pie(HDC, int, int, int, int, int, int, int, int);
  1425. BOOL  FAR PASCAL PatBlt(HDC, int, int, int, int, DWORD);
  1426. BOOL  FAR PASCAL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
  1427. BOOL  FAR PASCAL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
  1428. BOOL  FAR PASCAL TextOut(HDC, int, int, LPSTR, int);
  1429. LONG  FAR PASCAL TabbedTextOut(HDC, int, int, LPSTR, int, int, LPINT, int);
  1430. BOOL  FAR PASCAL GetCharWidth(HDC, WORD, WORD, LPINT);
  1431. DWORD FAR PASCAL SetPixel( HDC, int, int, DWORD);
  1432. DWORD FAR PASCAL GetPixel( HDC, int, int);
  1433. BOOL  FAR PASCAL FloodFill( HDC, int, int, DWORD);
  1434. BOOL  FAR PASCAL ExtFloodFill(HDC, int, int, DWORD, WORD);
  1435. void  FAR PASCAL LineDDA(int, int, int, int, FARPROC, LPSTR);
  1436.  
  1437. HANDLE FAR PASCAL GetStockObject(int);
  1438.  
  1439. HPEN FAR PASCAL CreatePen(int, int, DWORD);
  1440. HPEN FAR PASCAL CreatePenIndirect(LOGPEN FAR *);
  1441.  
  1442. HBRUSH FAR PASCAL CreateSolidBrush(DWORD);
  1443. HBRUSH FAR PASCAL CreateHatchBrush(int,DWORD);
  1444. DWORD  FAR PASCAL SetBrushOrg(HDC, int, int);
  1445. DWORD  FAR PASCAL GetBrushOrg(HDC);
  1446. HBRUSH FAR PASCAL CreatePatternBrush(HBITMAP);
  1447. HBRUSH FAR PASCAL CreateBrushIndirect(LOGBRUSH FAR *);
  1448.  
  1449. HBITMAP FAR PASCAL CreateBitmap(int, int, BYTE, BYTE, LPSTR);
  1450. HBITMAP FAR PASCAL CreateBitmapIndirect(BITMAP FAR *);
  1451. HBITMAP FAR PASCAL CreateCompatibleBitmap(HDC, int, int);
  1452. HBITMAP FAR PASCAL CreateDiscardableBitmap(HDC, int, int);
  1453.  
  1454. LONG  FAR PASCAL SetBitmapBits(HBITMAP, DWORD, LPSTR);
  1455. LONG  FAR PASCAL GetBitmapBits(HBITMAP, LONG, LPSTR);
  1456. DWORD FAR PASCAL SetBitmapDimension(HBITMAP, int, int);
  1457. DWORD FAR PASCAL GetBitmapDimension(HBITMAP);
  1458.  
  1459. HFONT FAR PASCAL CreateFont(int, int, int, int, int, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPSTR);
  1460. HFONT FAR PASCAL CreateFontIndirect(LOGFONT FAR *);
  1461.  
  1462. int  FAR PASCAL SelectClipRgn(HDC, HRGN);
  1463. HRGN FAR PASCAL CreateRectRgn(int, int, int, int);
  1464. void FAR PASCAL SetRectRgn(HRGN, int, int, int, int);
  1465. HRGN FAR PASCAL CreateRectRgnIndirect(LPRECT);
  1466. HRGN FAR PASCAL CreateEllipticRgnIndirect(LPRECT);
  1467. HRGN FAR PASCAL CreateEllipticRgn(int, int, int, int);
  1468. HRGN FAR PASCAL CreatePolygonRgn(LPPOINT, int, int);
  1469. HRGN FAR PASCAL CreatePolyPolygonRgn(LPPOINT, LPINT, int, int);
  1470. HRGN FAR PASCAL CreateRoundRectRgn(int, int, int, int, int, int);
  1471.  
  1472. int    FAR PASCAL GetObject(HANDLE, int, LPVOID);
  1473. BOOL   FAR PASCAL DeleteObject(HANDLE);
  1474. HANDLE FAR PASCAL SelectObject(HDC, HANDLE);
  1475. BOOL   FAR PASCAL UnrealizeObject(HBRUSH);
  1476.  
  1477. DWORD FAR PASCAL SetBkColor(HDC, DWORD);
  1478. DWORD FAR PASCAL GetBkColor(HDC);
  1479. int   FAR PASCAL SetBkMode(HDC, int);
  1480. int   FAR PASCAL GetBkMode(HDC);
  1481. DWORD FAR PASCAL SetTextColor(HDC, DWORD);
  1482. DWORD FAR PASCAL GetTextColor(HDC);
  1483. WORD  FAR PASCAL SetTextAlign(HDC, WORD);
  1484. WORD  FAR PASCAL GetTextAlign(HDC);
  1485. DWORD FAR PASCAL SetMapperFlags(HDC, DWORD);
  1486. DWORD FAR PASCAL GetAspectRatioFilter(HDC);
  1487. DWORD FAR PASCAL GetNearestColor(HDC, DWORD);
  1488. int   FAR PASCAL SetROP2(HDC, int);
  1489. int   FAR PASCAL GetROP2(HDC);
  1490. int   FAR PASCAL SetStretchBltMode(HDC, int);
  1491. int   FAR PASCAL GetStretchBltMode(HDC);
  1492. int   FAR PASCAL SetPolyFillMode(HDC, int);
  1493. int   FAR PASCAL GetPolyFillMode(HDC);
  1494. int   FAR PASCAL SetMapMode(HDC, int);
  1495. int   FAR PASCAL GetMapMode(HDC);
  1496. DWORD FAR PASCAL SetWindowOrg(HDC, int, int);
  1497. DWORD FAR PASCAL GetWindowOrg(HDC);
  1498. DWORD FAR PASCAL SetWindowExt(HDC, int, int);
  1499. DWORD FAR PASCAL GetWindowExt(HDC);
  1500. DWORD FAR PASCAL SetViewportOrg(HDC, int, int);
  1501. DWORD FAR PASCAL GetViewportOrg(HDC);
  1502. DWORD FAR PASCAL SetViewportExt(HDC, int, int);
  1503. DWORD FAR PASCAL GetViewportExt(HDC);
  1504. DWORD FAR PASCAL OffsetViewportOrg(HDC, int, int);
  1505. DWORD FAR PASCAL ScaleViewportExt(HDC, int, int, int, int);
  1506. DWORD FAR PASCAL OffsetWindowOrg(HDC, int, int);
  1507. DWORD FAR PASCAL ScaleWindowExt(HDC, int, int, int, int);
  1508.  
  1509. int  FAR PASCAL GetClipBox(HDC, LPRECT);
  1510. int  FAR PASCAL IntersectClipRect(HDC, int, int, int, int);
  1511. int  FAR PASCAL OffsetClipRgn(HDC, int, int);
  1512. int  FAR PASCAL ExcludeClipRect(HDC, int, int, int, int);
  1513. BOOL FAR PASCAL PtVisible(HDC, int, int);
  1514. int  FAR PASCAL CombineRgn(HRGN, HRGN, HRGN, int);
  1515. BOOL FAR PASCAL EqualRgn(HRGN, HRGN);
  1516. int  FAR PASCAL OffsetRgn(HRGN, int, int);
  1517. int  FAR PASCAL GetRgnBox(HRGN, LPRECT);
  1518.  
  1519. #ifdef WIN31
  1520.  
  1521. /* Drawing bounds accumulation APIs */
  1522. WORD FAR PASCAL SetBoundsRect(HDC hDC, LPRECT lprcBounds, WORD flags);
  1523. WORD FAR PASCAL GetBoundsRect(HDC hDC, LPRECT lprcBounds, WORD flags);
  1524.  
  1525. #define DCB_RESET       0x0001
  1526. #define DCB_ACCUMULATE  0x0002
  1527. #define DCB_DIRTY    DCB_ACCUMULATE
  1528. #define DCB_SET     (DCB_RESET | DCB_ACCUMULATE)
  1529. #define DCB_ENABLE      0x0004
  1530. #define DCB_DISABLE     0x0008
  1531.  
  1532. #endif    /* WIN31 */
  1533.  
  1534. int   FAR PASCAL SetTextJustification(HDC, int, int);
  1535. DWORD FAR PASCAL GetTextExtent(HDC, LPSTR, int);
  1536. DWORD FAR PASCAL GetTabbedTextExtent(HDC, LPSTR, int, int, LPINT);
  1537. int   FAR PASCAL SetTextCharacterExtra(HDC, int);
  1538. int   FAR PASCAL GetTextCharacterExtra(HDC);
  1539.  
  1540. #ifdef WIN31
  1541. DWORD FAR PASCAL GetTextExtentEx(HDC, LPSTR, int, int, LPINT, LPINT);
  1542. #endif    /* WIN31 */
  1543.  
  1544. HANDLE FAR PASCAL GetMetaFile(LPSTR);
  1545. BOOL   FAR PASCAL DeleteMetaFile(HANDLE);
  1546. HANDLE FAR PASCAL CopyMetaFile(HANDLE, LPSTR);
  1547.  
  1548. #ifndef NOMETAFILE
  1549. void FAR PASCAL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, WORD);
  1550. BOOL FAR PASCAL EnumMetaFile(HDC, LOCALHANDLE, FARPROC, BYTE FAR *);
  1551. #endif
  1552.  
  1553. BOOL FAR PASCAL PlayMetaFile(HDC, HANDLE);
  1554. int FAR PASCAL Escape(HDC, int, int, LPSTR, LPSTR);
  1555. int FAR PASCAL EnumFonts(HDC, LPSTR, FARPROC, LPSTR);
  1556. int FAR PASCAL EnumFontsCorrectly(HDC, LPSTR, FARPROC, LPSTR);
  1557. int FAR PASCAL EnumObjects(HDC, int, FARPROC, LPSTR);
  1558. int FAR PASCAL GetTextFace(HDC, int, LPSTR);
  1559.  
  1560. int FAR PASCAL    StartDoc(HDC, LPSTR, LPSTR);
  1561. int FAR PASCAL    StartPage(HDC);
  1562. int FAR PASCAL    EndPage(HDC);
  1563. int FAR PASCAL    EndDoc(HDC);
  1564. int FAR PASCAL    SetAbortProc(HDC, FARPROC);
  1565. int FAR PASCAL    AbortDoc(HDC);
  1566.  
  1567. #ifndef NOTEXTMETRIC
  1568. BOOL FAR PASCAL GetTextMetrics(HDC, LPTEXTMETRIC );
  1569. #endif
  1570.  
  1571. int FAR PASCAL GetDeviceCaps(HDC, int);
  1572.  
  1573. int FAR PASCAL SetEnvironment(LPSTR, LPSTR, WORD);
  1574. int FAR PASCAL GetEnvironment(LPSTR, LPSTR, WORD);
  1575.  
  1576. BOOL FAR PASCAL DPtoLP(HDC, LPPOINT, int);
  1577. BOOL FAR PASCAL LPtoDP(HDC, LPPOINT, int);
  1578.  
  1579. HANDLE FAR PASCAL CreateMetaFile(LPSTR);
  1580. HANDLE FAR PASCAL CloseMetaFile(HANDLE);
  1581. HANDLE FAR PASCAL GetMetaFileBits(HANDLE);
  1582. HANDLE FAR PASCAL SetMetaFileBits(HANDLE);
  1583.  
  1584. int FAR PASCAL SetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1585. int FAR PASCAL GetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1586. int FAR PASCAL SetDIBitsToDevice(HDC,WORD,WORD,WORD,WORD,
  1587.                     WORD,WORD,WORD,WORD,
  1588.                     LPSTR,LPBITMAPINFO,WORD);
  1589. HBITMAP FAR PASCAL CreateDIBitmap(HDC,LPBITMAPINFOHEADER,DWORD,LPSTR,
  1590.                         LPBITMAPINFO,WORD);
  1591. HBRUSH FAR PASCAL CreateDIBPatternBrush(HANDLE,WORD);
  1592. int FAR PASCAL StretchDIBits(HDC, WORD, WORD, WORD, WORD, WORD, 
  1593.             WORD, WORD, WORD, LPSTR, LPBITMAPINFO, WORD, DWORD);
  1594.  
  1595. HPALETTE FAR PASCAL CreatePalette (LPLOGPALETTE);
  1596. HPALETTE  FAR PASCAL SelectPalette (HDC,HPALETTE, BOOL) ;
  1597. WORD FAR PASCAL RealizePalette (HDC) ;
  1598. int  FAR PASCAL UpdateColors (HDC) ;
  1599. void FAR PASCAL AnimatePalette(HPALETTE, WORD, WORD, LPPALETTEENTRY);
  1600. WORD FAR PASCAL SetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1601. WORD FAR PASCAL GetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1602. WORD FAR PASCAL GetNearestPaletteIndex(HPALETTE, DWORD);
  1603. BOOL FAR PASCAL ResizePalette(HPALETTE, WORD);
  1604.  
  1605. WORD FAR PASCAL GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY);
  1606. WORD FAR PASCAL GetSystemPaletteUse(HDC);
  1607. WORD FAR PASCAL SetSystemPaletteUse(HDC, WORD);
  1608.  
  1609. #ifndef NOSCALABLEFONT
  1610.  
  1611. /*  GDI scalable font API prototypes and data structures: */
  1612.  
  1613. typedef struct _PANOSE { /* panose */
  1614.     BYTE    bFamilyType;
  1615.     BYTE    bSerifStyle;
  1616.     BYTE    bWeight;
  1617.     BYTE    bProportion;
  1618.     BYTE    bContrast;
  1619.     BYTE    bStrokeVariation;
  1620.     BYTE    bArmStyle;
  1621.     BYTE    bLetterform;
  1622.     BYTE    bMidline;
  1623.     BYTE    bXHeight;
  1624. } PANOSE;
  1625.  
  1626. #ifndef NOTEXTMETRIC
  1627.  
  1628. typedef struct _OUTLINETEXTMETRIC {
  1629.     WORD otmSize;          /* I size of this structure             */
  1630.     TEXTMETRIC otmTextMetrics;      /* regular text metrics             */
  1631.     PANOSE otmPanoseNumber;      /* Panose number of font             */
  1632.     WORD otmfsSelection;      /* B Font selection flags (see #defines)   */
  1633.     WORD otmfsType;          /* B Type indicators    (see #defines)         */
  1634.     WORD otmsCharSlopeRise;      /* Slope angle Rise / Run   1 vertical     */
  1635.     WORD otmsCharSlopeRun;      /*                  0 vertical     */
  1636.     WORD otmEMSquare;          /* N size of EM                 */
  1637.     WORD otmAscent;          /* D ascent above baseline             */
  1638.     WORD otmDescent;          /* D descent below baseline             */
  1639.     WORD otmLineGap;          /* D                         */
  1640.     WORD otmCapEmHeight;      /* D height of upper case M             */
  1641.     WORD otmXHeight;          /* D height of lower case chars in font    */
  1642.     RECT otmrcFontBox;          /* D Font bounding box             */
  1643.     WORD otmMacAscent;          /* D ascent above baseline for Mac         */
  1644.     WORD otmMacDescent;       /* D descent below baseline for Mac         */
  1645.     WORD otmMacLineGap;       /* D                         */
  1646.     WORD otmusMinimumPPEM;      /* D Minimum point ppem             */
  1647.     WORD otmsUnderscorePosition;  /* D Underscore position             */
  1648.     WORD otmsUnderscoreSize;      /* D Underscore size                 */
  1649.     WORD otmsStrikeoutPosition;   /* D Strikeout position             */
  1650.     WORD otmsStrikeoutSize;      /* D Strikeout size                 */
  1651.     POINT otmptSubscriptSize;      /* D Size of subscript             */
  1652.     POINT otmptSubscriptOffset;   /* D Offset of subscript             */
  1653.     POINT otmptSuperscriptSize;   /* D Size of superscript             */
  1654.     POINT otmptSuperscriptOffset; /* D Offset of superscript             */
  1655.     PSTR otmpFamilyName;      /* PSTR near ptr to family name         */
  1656.     PSTR otmpFaceName;          /* PSTR near ptr to face name          */
  1657.     PSTR otmpStyleName;       /* PSTR near ptr to Style string         */
  1658.     PSTR otmpFullName;          /* PSTR near ptr to full name          */
  1659. } OUTLINETEXTMETRIC;
  1660.  
  1661. typedef OUTLINETEXTMETRIC   FAR *LPOUTLINETEXTMETRIC;
  1662.  
  1663. #endif /* NOTEXTMETRIC */
  1664.  
  1665. typedef struct _FIXED {
  1666.     WORD    fract;
  1667.     short   value;
  1668. } FIXED;
  1669.  
  1670. typedef struct _MAT2 {
  1671.      FIXED eM11;
  1672.      FIXED eM12;
  1673.      FIXED eM21;
  1674.      FIXED eM22;
  1675. } MAT2;
  1676.  
  1677. typedef struct _GLYPHDATAINFO {
  1678.     HANDLE  gdihPolyPolygonData;
  1679.     DWORD   gdidwSizeBuffer;
  1680.     MAT2    gdimatXForm;
  1681. } GLYPHDATAINFO;
  1682.  
  1683. typedef GLYPHDATAINFO    FAR *LPGLYPHDATAINFO;
  1684.  
  1685. typedef struct _GLYPHMETRICS {
  1686.     WORD    gmBlackBoxX;
  1687.     WORD    gmBlackBoxY;
  1688.     POINT   gmptGlyphOrigin;
  1689.     short   gmCellIncX;
  1690.     short   gmCellIncY;
  1691. } GLYPHMETRICS;
  1692.  
  1693. typedef GLYPHMETRICS    FAR *LPGLYPHMETRICS;
  1694.  
  1695. typedef struct _ABC {
  1696.     short   abcA;
  1697.     WORD    abcB;
  1698.     short   abcC;
  1699. } ABC;
  1700.  
  1701. typedef ABC        FAR *LPABC;
  1702. typedef WORD        FAR *LPFONTDIR;
  1703.  
  1704. typedef struct    _INFO {
  1705.     short   nSize;
  1706.     short   wFlags;
  1707. } INFO;
  1708.  
  1709. typedef INFO        FAR *LPINFO;
  1710.  
  1711. /* bits defined in wFlags of INFO */
  1712.  
  1713. #define TT_AVAILABLE    0x0001
  1714. #define TT_ENABLED    0x0002
  1715.  
  1716. DWORD FAR PASCAL ConvertOutlineFontFile(LPSTR, LPSTR, LPSTR);
  1717. DWORD FAR PASCAL GetFontData(HDC, DWORD, DWORD, LPSTR, DWORD);
  1718. BOOL  FAR PASCAL GetGlyphOutline(HDC, WORD, WORD, LPGLYPHMETRICS, LPGLYPHDATAINFO);
  1719. DWORD FAR PASCAL EngineMakeFontDir(HDC, LPFONTDIR, LPSTR);
  1720. BOOL  FAR PASCAL CreateScalableFontResource(HDC, LPSTR, LPSTR, LPSTR);
  1721. BOOL  FAR PASCAL GetCharABCWidths(HDC, WORD, WORD, LPABC);
  1722. BOOL  FAR PASCAL GetRasterizerCaps(LPINFO, int);
  1723.  
  1724. #ifndef NOTEXTMETRIC
  1725.  
  1726. DWORD FAR PASCAL GetOutlineTextMetrics(HDC, WORD, LPOUTLINETEXTMETRIC);
  1727.  
  1728. #endif /* NOTEXTMETRIC */
  1729. #endif /* NOSCALABLEFONT */
  1730. #endif /* NOGDI */
  1731.  
  1732.  
  1733. /*--------------------------------------------------------------------------*/
  1734. /*    USER Section                                */
  1735. /*--------------------------------------------------------------------------*/
  1736.  
  1737. #ifndef NOUSER
  1738.  
  1739. int FAR PASCAL wvsprintf(LPSTR,LPSTR,LPSTR);
  1740. int FAR cdecl wsprintf(LPSTR,LPSTR,...);
  1741.  
  1742. #ifndef NOSCROLL
  1743.  
  1744. /* Scroll Bar Constants */
  1745. #define SB_HORZ            0
  1746. #define SB_VERT            1
  1747. #define SB_CTL            2
  1748. #define SB_BOTH            3
  1749.  
  1750. #define    ESB_ENABLE_BOTH        0x0000
  1751. #define    ESB_DISABLE_LTUP    0x0001
  1752. #define    ESB_DISABLE_RTDN    0x0002
  1753. #define ESB_DISABLE_BOTH    0x0003
  1754. #define SB_DISABLE_MASK        ESB_DISABLE_BOTH
  1755.  
  1756. /* Scroll Bar Commands */
  1757. #define SB_LINEUP        0
  1758. #define SB_LINEDOWN        1
  1759. #define SB_PAGEUP        2
  1760. #define SB_PAGEDOWN        3
  1761. #define SB_THUMBPOSITION    4
  1762. #define SB_THUMBTRACK        5
  1763. #define SB_TOP            6
  1764. #define SB_BOTTOM        7
  1765. #define SB_ENDSCROLL        8
  1766.  
  1767. #endif /* NOSCROLL */
  1768.  
  1769. #ifndef NOSHOWWINDOW
  1770.  
  1771. /* ShowWindow() Commands */
  1772. #define SW_HIDE            0
  1773. #define SW_SHOWNORMAL        1
  1774. #define SW_NORMAL        1
  1775. #define SW_SHOWMINIMIZED    2
  1776. #define SW_SHOWMAXIMIZED    3
  1777. #define SW_MAXIMIZE        3
  1778. #define SW_SHOWNOACTIVATE   4
  1779. #define SW_SHOW            5
  1780. #define SW_MINIMIZE        6
  1781. #define SW_SHOWMINNOACTIVE  7
  1782. #define SW_SHOWNA        8
  1783. #define SW_RESTORE          9
  1784.  
  1785. /* Old ShowWindow() Commands */
  1786. #define HIDE_WINDOW        0
  1787. #define SHOW_OPENWINDOW     1
  1788. #define SHOW_ICONWINDOW     2
  1789. #define SHOW_FULLSCREEN     3
  1790. #define SHOW_OPENNOACTIVATE 4
  1791.  
  1792. /* Identifiers for the WM_SHOWWINDOW message */
  1793. #define SW_PARENTCLOSING    1
  1794. #define SW_OTHERZOOM        2
  1795. #define SW_PARENTOPENING    3
  1796. #define SW_OTHERUNZOOM        4
  1797.  
  1798. #endif /* NOSHOWWINDOW */
  1799.  
  1800. /* Region Flags */
  1801. #define ERROR            0
  1802. #define NULLREGION        1
  1803. #define SIMPLEREGION        2
  1804. #define COMPLEXREGION        3
  1805.  
  1806. /* CombineRgn() Styles */
  1807. #define RGN_AND         1
  1808. #define RGN_OR            2
  1809. #define RGN_XOR         3
  1810. #define RGN_DIFF        4
  1811. #define RGN_COPY        5
  1812.  
  1813. #ifndef NOVIRTUALKEYCODES
  1814.  
  1815. /* Virtual Keys, Standard Set */
  1816. #define VK_LBUTTON        0x01
  1817. #define VK_RBUTTON        0x02
  1818. #define VK_CANCEL        0x03
  1819. #define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */
  1820. #define VK_BACK         0x08
  1821. #define VK_TAB            0x09
  1822. #define VK_CLEAR        0x0C
  1823. #define VK_RETURN        0x0D
  1824. #define VK_SHIFT        0x10
  1825. #define VK_CONTROL        0x11
  1826. #define VK_MENU         0x12
  1827. #define VK_PAUSE        0x13
  1828. #define VK_CAPITAL        0x14
  1829. #define VK_ESCAPE        0x1B
  1830. #define VK_SPACE        0x20
  1831. #define VK_PRIOR        0x21
  1832. #define VK_NEXT         0x22
  1833. #define VK_END            0x23
  1834. #define VK_HOME         0x24
  1835. #define VK_LEFT         0x25
  1836. #define VK_UP            0x26
  1837. #define VK_RIGHT        0x27
  1838. #define VK_DOWN         0x28
  1839. #define VK_SELECT        0x29
  1840. #define VK_PRINT        0x2A
  1841. #define VK_EXECUTE        0x2B
  1842. #define VK_SNAPSHOT        0x2C
  1843. /* #define VK_COPY         0x2C not used by keyboards. */
  1844. #define VK_INSERT        0x2D
  1845. #define VK_DELETE        0x2E
  1846. #define VK_HELP         0x2F
  1847.  
  1848. /* VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z' */
  1849. /* VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '0' */
  1850.  
  1851. #define VK_NUMPAD0        0x60
  1852. #define VK_NUMPAD1        0x61
  1853. #define VK_NUMPAD2        0x62
  1854. #define VK_NUMPAD3        0x63
  1855. #define VK_NUMPAD4        0x64
  1856. #define VK_NUMPAD5        0x65
  1857. #define VK_NUMPAD6        0x66
  1858. #define VK_NUMPAD7        0x67
  1859. #define VK_NUMPAD8        0x68
  1860. #define VK_NUMPAD9        0x69
  1861. #define VK_MULTIPLY        0x6A
  1862. #define VK_ADD            0x6B
  1863. #define VK_SEPARATOR        0x6C
  1864. #define VK_SUBTRACT        0x6D
  1865. #define VK_DECIMAL        0x6E
  1866. #define VK_DIVIDE        0x6F
  1867. #define VK_F1            0x70
  1868. #define VK_F2            0x71
  1869. #define VK_F3            0x72
  1870. #define VK_F4            0x73
  1871. #define VK_F5            0x74
  1872. #define VK_F6            0x75
  1873. #define VK_F7            0x76
  1874. #define VK_F8            0x77
  1875. #define VK_F9            0x78
  1876. #define VK_F10            0x79
  1877. #define VK_F11            0x7A
  1878. #define VK_F12            0x7B
  1879. #define VK_F13            0x7C
  1880. #define VK_F14            0x7D
  1881. #define VK_F15            0x7E
  1882. #define VK_F16            0x7F
  1883.  
  1884. #define VK_NUMLOCK        0x90
  1885. #define VK_SCROLL           0x91
  1886.  
  1887. #endif /* NOVIRTUALKEYCODES */
  1888.  
  1889. typedef struct tagWNDCLASS
  1890.   {
  1891.     WORD    style;
  1892.     LONG    (FAR PASCAL *lpfnWndProc)();
  1893.     int     cbClsExtra;
  1894.     int     cbWndExtra;
  1895.     HANDLE    hInstance;
  1896.     HICON    hIcon;
  1897.     HCURSOR    hCursor;
  1898.     HBRUSH    hbrBackground;
  1899.     LPSTR    lpszMenuName;
  1900.     LPSTR    lpszClassName;
  1901.   } WNDCLASS;
  1902. typedef WNDCLASS        *PWNDCLASS;
  1903. typedef WNDCLASS NEAR        *NPWNDCLASS;
  1904. typedef WNDCLASS FAR        *LPWNDCLASS;
  1905.  
  1906. #ifndef NOMSG
  1907.  
  1908. /* Message structure */
  1909. typedef struct tagMSG
  1910.   {
  1911.     HWND    hwnd;
  1912.     WORD    message;
  1913.     WORD    wParam;
  1914.     LONG    lParam;
  1915.     DWORD    time;
  1916.     POINT    pt;
  1917.   } MSG;
  1918. typedef MSG            *PMSG;
  1919. typedef MSG NEAR        *NPMSG;
  1920. typedef MSG FAR         *LPMSG;
  1921.  
  1922. #endif /* NOMSG */
  1923.  
  1924. #ifndef NOWINOFFSETS
  1925.  
  1926. /* Window field offsets for GetWindowLong() and GetWindowWord() */
  1927. #define GWL_WNDPROC        (-4)
  1928. #define GWW_HINSTANCE        (-6)
  1929. #define GWW_HWNDPARENT        (-8)
  1930. #define GWW_ID            (-12)
  1931. #define GWL_STYLE        (-16)
  1932. #define GWL_EXSTYLE        (-20)
  1933.  
  1934. /* Class field offsets for GetClassLong() and GetClassWord() */
  1935. #define GCL_MENUNAME        (-8)
  1936. #define GCW_HBRBACKGROUND   (-10)
  1937. #define GCW_HCURSOR        (-12)
  1938. #define GCW_HICON        (-14)
  1939. #define GCW_HMODULE        (-16)
  1940. #define GCW_CBWNDEXTRA        (-18)
  1941. #define GCW_CBCLSEXTRA        (-20)
  1942. #define GCL_WNDPROC        (-24)
  1943. #define GCW_STYLE        (-26)
  1944.  
  1945. #endif /* NOWINOFFSETS */
  1946.  
  1947. #ifndef NOWINMESSAGES
  1948.  
  1949. /* Window Messages */
  1950. #define WM_NULL            0x0000
  1951. #define WM_CREATE        0x0001
  1952. #define WM_DESTROY        0x0002
  1953. #define WM_MOVE            0x0003
  1954. #define WM_SIZE            0x0005
  1955. #define WM_ACTIVATE        0x0006
  1956. #define WM_SETFOCUS        0x0007
  1957. #define WM_KILLFOCUS        0x0008
  1958. #define WM_ENABLE        0x000A
  1959. #define WM_SETREDRAW        0x000B
  1960. #define WM_SETTEXT        0x000C
  1961. #define WM_GETTEXT        0x000D
  1962. #define WM_GETTEXTLENGTH    0x000E
  1963. #define WM_PAINT        0x000F
  1964. #define WM_CLOSE        0x0010
  1965. #define WM_QUERYENDSESSION  0x0011
  1966. #define WM_QUIT            0x0012
  1967. #define WM_QUERYOPEN        0x0013
  1968. #define WM_ERASEBKGND        0x0014
  1969. #define WM_SYSCOLORCHANGE   0x0015
  1970. #define WM_ENDSESSION        0x0016
  1971. #define WM_SHOWWINDOW        0x0018
  1972. #define WM_CTLCOLOR        0x0019
  1973. #define WM_WININICHANGE        0x001A
  1974. #define WM_DEVMODECHANGE    0x001B
  1975. #define WM_ACTIVATEAPP        0x001C
  1976. #define WM_FONTCHANGE        0x001D
  1977. #define WM_TIMECHANGE        0x001E
  1978. #define WM_CANCELMODE        0x001F
  1979. #define WM_SETCURSOR        0x0020
  1980. #define WM_MOUSEACTIVATE    0x0021
  1981. #define WM_CHILDACTIVATE    0x0022
  1982. #define WM_QUEUESYNC        0x0023
  1983. #define WM_GETMINMAXINFO    0x0024
  1984. #define WM_PAINTICON        0x0026
  1985. #define WM_ICONERASEBKGND   0x0027
  1986. #define WM_NEXTDLGCTL        0x0028
  1987. #define WM_SPOOLERSTATUS    0x002A
  1988. #define WM_DRAWITEM         0x002B
  1989. #define WM_MEASUREITEM      0x002C
  1990. #define WM_DELETEITEM       0x002D
  1991. #define WM_VKEYTOITEM       0x002E
  1992. #define WM_CHARTOITEM       0x002F
  1993. #define WM_SETFONT          0x0030
  1994. #define WM_GETFONT        0x0031
  1995. #define WM_SETHOTKEY        0x0032
  1996. #define WM_GETHOTKEY        0x0033
  1997. #define WM_QUERYDRAGICON    0x0037
  1998.  
  1999. #define WM_COMPAREITEM        0x0039
  2000. #define WM_COMPACTING       0x0041
  2001.  
  2002. #ifdef WIN31
  2003. #define WM_OTHERWINDOWCREATED   0x0042
  2004. #define WM_OTHERWINDOWDESTROYED 0x0043
  2005. #define WM_COMMNOTIFY        0x0044
  2006. #define WM_HOTKEYEVENT        0x0045
  2007. #define WM_WINDOWPOSCHANGING    0x0046
  2008. #define WM_WINDOWPOSCHANGED    0x0047
  2009.  
  2010. #endif    /* WIN31 */
  2011.  
  2012. #define WM_NCCREATE        0x0081
  2013. #define WM_NCDESTROY        0x0082
  2014. #define WM_NCCALCSIZE        0x0083
  2015. #define WM_NCHITTEST        0x0084
  2016. #define WM_NCPAINT        0x0085
  2017. #define WM_NCACTIVATE        0x0086
  2018. #define WM_GETDLGCODE        0x0087
  2019. #define WM_NCMOUSEMOVE        0x00A0
  2020. #define WM_NCLBUTTONDOWN    0x00A1
  2021. #define WM_NCLBUTTONUP        0x00A2
  2022. #define WM_NCLBUTTONDBLCLK  0x00A3
  2023. #define WM_NCRBUTTONDOWN    0x00A4
  2024. #define WM_NCRBUTTONUP        0x00A5
  2025. #define WM_NCRBUTTONDBLCLK  0x00A6
  2026. #define WM_NCMBUTTONDOWN    0x00A7
  2027. #define WM_NCMBUTTONUP        0x00A8
  2028. #define WM_NCMBUTTONDBLCLK  0x00A9
  2029.  
  2030. #define WM_KEYFIRST        0x0100
  2031. #define WM_KEYDOWN        0x0100
  2032. #define WM_KEYUP        0x0101
  2033. #define WM_CHAR            0x0102
  2034. #define WM_DEADCHAR        0x0103
  2035. #define WM_SYSKEYDOWN        0x0104
  2036. #define WM_SYSKEYUP        0x0105
  2037. #define WM_SYSCHAR        0x0106
  2038. #define WM_SYSDEADCHAR        0x0107
  2039. #define WM_KEYLAST        0x0108
  2040.  
  2041. #define WM_INITDIALOG        0x0110
  2042. #define WM_COMMAND        0x0111
  2043. #define WM_SYSCOMMAND        0x0112
  2044. #define WM_TIMER        0x0113
  2045. #define WM_HSCROLL        0x0114
  2046. #define WM_VSCROLL        0x0115
  2047. #define WM_INITMENU        0x0116
  2048. #define WM_INITMENUPOPUP    0x0117
  2049. #define WM_MENUSELECT        0x011F
  2050. #define WM_MENUCHAR        0x0120
  2051. #define WM_ENTERIDLE        0x0121
  2052.  
  2053.  
  2054. #define WM_MOUSEFIRST        0x0200
  2055. #define WM_MOUSEMOVE        0x0200
  2056. #define WM_LBUTTONDOWN        0x0201
  2057. #define WM_LBUTTONUP        0x0202
  2058. #define WM_LBUTTONDBLCLK    0x0203
  2059. #define WM_RBUTTONDOWN        0x0204
  2060. #define WM_RBUTTONUP        0x0205
  2061. #define WM_RBUTTONDBLCLK    0x0206
  2062. #define WM_MBUTTONDOWN        0x0207
  2063. #define WM_MBUTTONUP        0x0208
  2064. #define WM_MBUTTONDBLCLK    0x0209
  2065. #define WM_MOUSELAST        0x0209
  2066.  
  2067. #define WM_PARENTNOTIFY     0x0210
  2068. #define WM_MDICREATE        0x0220
  2069. #define WM_MDIDESTROY        0x0221
  2070. #define WM_MDIACTIVATE        0x0222
  2071. #define WM_MDIRESTORE        0x0223
  2072. #define WM_MDINEXT        0x0224
  2073. #define WM_MDIMAXIMIZE        0x0225
  2074. #define WM_MDITILE        0x0226
  2075. #define WM_MDICASCADE        0x0227
  2076. #define WM_MDIICONARRANGE   0x0228
  2077. #define WM_MDIGETACTIVE     0x0229
  2078. #define WM_MDISETMENU        0x0230
  2079. #define WM_DROPFILES        0x0233
  2080.  
  2081.  
  2082. #define WM_CUT            0x0300
  2083. #define WM_COPY            0x0301
  2084. #define WM_PASTE        0x0302
  2085. #define WM_CLEAR        0x0303
  2086. #define WM_UNDO            0x0304
  2087. #define WM_RENDERFORMAT        0x0305
  2088. #define WM_RENDERALLFORMATS 0x0306
  2089. #define WM_DESTROYCLIPBOARD 0x0307
  2090. #define WM_DRAWCLIPBOARD    0x0308
  2091. #define WM_PAINTCLIPBOARD   0x0309
  2092. #define WM_VSCROLLCLIPBOARD 0x030A
  2093. #define WM_SIZECLIPBOARD    0x030B
  2094. #define WM_ASKCBFORMATNAME  0x030C
  2095. #define WM_CHANGECBCHAIN    0x030D
  2096. #define WM_HSCROLLCLIPBOARD 0x030E
  2097. #define WM_QUERYNEWPALETTE  0x030F
  2098. #define WM_PALETTEISCHANGING 0x0310
  2099. #define WM_PALETTECHANGED   0x0311
  2100.  
  2101. #ifdef WIN31
  2102. #define WM_PENWINFIRST      0x0380
  2103. #define WM_PENWINLAST       0x038F
  2104.  
  2105.  
  2106. #define WM_COALESCE_FIRST   0x0390
  2107. #define WM_COALESCE_LAST    0x039F
  2108.  
  2109.  
  2110. #endif    /* WIN31 */
  2111.  
  2112.  
  2113.  
  2114. /* NOTE: All Message Numbers below 0x0400 are RESERVED. */
  2115.  
  2116. /* Private Window Messages Start Here: */
  2117. #define WM_USER            0x0400
  2118.  
  2119. /* WM_SIZE message wParam values */
  2120. #define SIZENORMAL        0
  2121. #define SIZEICONIC        1
  2122. #define SIZEFULLSCREEN        2
  2123. #define SIZEZOOMSHOW        3
  2124. #define SIZEZOOMHIDE        4
  2125.  
  2126. #ifdef WIN31
  2127.  
  2128. /* WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam */
  2129. typedef struct tagWINDOWPOS
  2130. {
  2131.     HWND    hwnd;
  2132.     HWND    hwndInsertAfter;
  2133.     int     x;
  2134.     int     y;
  2135.     int     cx;
  2136.     int     cy;
  2137.     WORD    flags;
  2138. } WINDOWPOS;
  2139. typedef WINDOWPOS FAR *LPWINDOWPOS;
  2140.  
  2141. #endif /* WIN31 */
  2142.  
  2143. #ifndef NONCMESSAGES
  2144.  
  2145. /* WM_SYNCTASK Commands */
  2146. #define ST_BEGINSWP        0
  2147. #define ST_ENDSWP        1
  2148.  
  2149. /* WinWhere() Area Codes */
  2150. #define HTERROR         (-2)
  2151. #define HTTRANSPARENT        (-1)
  2152. #define HTNOWHERE        0
  2153. #define HTCLIENT        1
  2154. #define HTCAPTION        2
  2155. #define HTSYSMENU        3
  2156. #define HTGROWBOX        4
  2157. #define HTSIZE            HTGROWBOX
  2158. #define HTMENU            5
  2159. #define HTHSCROLL        6
  2160. #define HTVSCROLL        7
  2161. #define HTREDUCE        8
  2162. #define HTZOOM            9
  2163. #define HTLEFT            10
  2164. #define HTRIGHT         11
  2165. #define HTTOP            12
  2166. #define HTTOPLEFT        13
  2167. #define HTTOPRIGHT        14
  2168. #define HTBOTTOM        15
  2169. #define HTBOTTOMLEFT        16
  2170. #define HTBOTTOMRIGHT        17
  2171. #define HTSIZEFIRST        HTLEFT
  2172. #define HTSIZELAST        HTBOTTOMRIGHT
  2173.  
  2174. #ifdef WIN31
  2175.  
  2176. /* WM_NCCALCSIZE parameter structure */
  2177. typedef struct tagNCCALCSIZE_PARAMS
  2178. {
  2179.     RECT       rgrc[3];
  2180.     WINDOWPOS FAR* lppos;
  2181. } NCCALCSIZE_PARAMS;
  2182. typedef NCCALCSIZE_PARAMS FAR* LPNCCALCSIZE_PARAMS;
  2183.  
  2184. /* WM_NCCALCSIZE "window valid rect" return values */
  2185. #define WVR_ALIGNTOP        0x0010
  2186. #define WVR_ALIGNLEFT        0x0020
  2187. #define WVR_ALIGNBOTTOM     0x0040
  2188. #define WVR_ALIGNRIGHT        0x0080
  2189. #define WVR_HREDRAW        0x0100
  2190. #define WVR_VREDRAW        0x0200
  2191. #define WVR_REDRAW        (WVR_HREDRAW | WVR_VREDRAW)
  2192. #define WVR_VALIDRECTS        0x0400
  2193.  
  2194.  
  2195. #endif    /* WIN31 */
  2196.  
  2197. #endif /* NONCMESSAGES */
  2198.  
  2199. /* WM_MOUSEACTIVATE Return Codes */
  2200. #define MA_ACTIVATE        1
  2201. #define MA_ACTIVATEANDEAT   2
  2202. #define MA_NOACTIVATE        3
  2203.  
  2204. #ifdef WIN31
  2205. #define MA_NOACTIVATEANDEAT 4
  2206. #endif /* WIN31 */
  2207.  
  2208. WORD FAR PASCAL RegisterWindowMessage(LPSTR);
  2209.  
  2210. #ifndef NOKEYSTATES
  2211.  
  2212. /* Key State Masks for Mouse Messages */
  2213. #define MK_LBUTTON        0x0001
  2214. #define MK_RBUTTON        0x0002
  2215. #define MK_SHIFT        0x0004
  2216. #define MK_CONTROL        0x0008
  2217. #define MK_MBUTTON        0x0010
  2218.  
  2219. #endif /* NOKEYSTATES */
  2220.  
  2221. #endif /* NOWINMESSAGES */
  2222.  
  2223. #ifndef NOWINSTYLES
  2224.  
  2225. /* Window Styles */
  2226. #define WS_OVERLAPPED        0x00000000L
  2227. #define WS_POPUP        0x80000000L
  2228. #define WS_CHILD        0x40000000L
  2229. #define WS_MINIMIZE        0x20000000L
  2230. #define WS_VISIBLE        0x10000000L
  2231. #define WS_DISABLED        0x08000000L
  2232. #define WS_CLIPSIBLINGS     0x04000000L
  2233. #define WS_CLIPCHILDREN     0x02000000L
  2234. #define WS_MAXIMIZE        0x01000000L
  2235. #define WS_CAPTION        0x00C00000L     /* WS_BORDER | WS_DLGFRAME    */
  2236. #define WS_BORDER        0x00800000L
  2237. #define WS_DLGFRAME        0x00400000L
  2238. #define WS_VSCROLL        0x00200000L
  2239. #define WS_HSCROLL        0x00100000L
  2240. #define WS_SYSMENU        0x00080000L
  2241. #define WS_THICKFRAME        0x00040000L
  2242. #define WS_GROUP        0x00020000L
  2243. #define WS_TABSTOP        0x00010000L
  2244.  
  2245. #define WS_MINIMIZEBOX        0x00020000L
  2246. #define WS_MAXIMIZEBOX        0x00010000L
  2247.  
  2248. #define WS_TILED        WS_OVERLAPPED
  2249. #define WS_ICONIC        WS_MINIMIZE
  2250. #define WS_SIZEBOX        WS_THICKFRAME
  2251.  
  2252. /* Common Window Styles */
  2253. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
  2254. #define WS_POPUPWINDOW        (WS_POPUP | WS_BORDER | WS_SYSMENU)
  2255. #define WS_CHILDWINDOW        (WS_CHILD)
  2256.  
  2257. #define WS_TILEDWINDOW        (WS_OVERLAPPEDWINDOW)
  2258.  
  2259. /* Extended Window Styles */
  2260. #define WS_EX_DLGMODALFRAME  0x00000001L
  2261. #define WS_EX_NOPARENTNOTIFY 0x00000004L
  2262.  
  2263. #ifdef WIN31
  2264. #define WS_EX_TOPMOST         0x00000008L
  2265. #define WS_EX_ACCEPTFILES    0x00000010L
  2266. #define WS_EX_TRANSPARENT    0x00000020L
  2267. #endif /* WIN31 */
  2268.  
  2269. /* Class styles */
  2270. #define CS_VREDRAW        0x0001
  2271. #define CS_HREDRAW        0x0002
  2272. #define CS_KEYCVTWINDOW     0x0004
  2273. #define CS_DBLCLKS        0x0008
  2274.             /*  0x0010 -- no longer used */
  2275. #define CS_OWNDC        0x0020
  2276. #define CS_CLASSDC        0x0040
  2277. #define CS_PARENTDC        0x0080
  2278. #define CS_NOKEYCVT        0x0100
  2279. #define CS_NOCLOSE        0x0200
  2280. #define CS_SAVEBITS        0x0800
  2281. #define CS_BYTEALIGNCLIENT  0x1000
  2282. #define CS_BYTEALIGNWINDOW  0x2000
  2283. #define CS_GLOBALCLASS        0x4000    /* Global window class */
  2284.  
  2285. #endif /* NOWINSTYLES */
  2286.  
  2287. #ifndef NOCLIPBOARD
  2288.  
  2289. /* Predefined Clipboard Formats */
  2290. #define CF_TEXT         1
  2291. #define CF_BITMAP        2
  2292. #define CF_METAFILEPICT     3
  2293. #define CF_SYLK         4
  2294. #define CF_DIF            5
  2295. #define CF_TIFF         6
  2296. #define CF_OEMTEXT        7
  2297. #define CF_DIB            8
  2298. #define CF_PALETTE        9
  2299.  
  2300. #define CF_OWNERDISPLAY     0x0080
  2301. #define CF_DSPTEXT        0x0081
  2302. #define CF_DSPBITMAP        0x0082
  2303. #define CF_DSPMETAFILEPICT  0x0083
  2304.  
  2305. /* "Private" formats don't get GlobalFree()'d */
  2306. #define CF_PRIVATEFIRST     0x0200
  2307. #define CF_PRIVATELAST        0x02FF
  2308.  
  2309. /* "GDIOBJ" formats do get DeleteObject()'d */
  2310. #define CF_GDIOBJFIRST        0x0300
  2311. #define CF_GDIOBJLAST        0x03FF
  2312.  
  2313. #endif /* NOCLIPBOARD */
  2314.  
  2315. typedef struct tagPAINTSTRUCT
  2316.   {
  2317.     HDC     hdc;
  2318.     BOOL    fErase;
  2319.     RECT    rcPaint;
  2320.     BOOL    fRestore;
  2321.     BOOL    fIncUpdate;
  2322.     BYTE    rgbReserved[16];
  2323.   } PAINTSTRUCT;
  2324. typedef PAINTSTRUCT        *PPAINTSTRUCT;
  2325. typedef PAINTSTRUCT NEAR    *NPPAINTSTRUCT;
  2326. typedef PAINTSTRUCT FAR     *LPPAINTSTRUCT;
  2327.  
  2328. typedef struct tagCREATESTRUCT
  2329.   {
  2330.     LPSTR    lpCreateParams;
  2331.     HANDLE    hInstance;
  2332.     HANDLE    hMenu;
  2333.     HWND    hwndParent;
  2334.     int     cy;
  2335.     int     cx;
  2336.     int     y;
  2337.     int     x;
  2338.     LONG    style;
  2339.     LPSTR    lpszName;
  2340.     LPSTR    lpszClass;
  2341.     DWORD    dwExStyle;
  2342.   } CREATESTRUCT;
  2343. typedef CREATESTRUCT FAR    *LPCREATESTRUCT;
  2344.  
  2345.  
  2346. /* Owner draw control types */
  2347. #define ODT_MENU    1
  2348. #define ODT_LISTBOX    2
  2349. #define ODT_COMBOBOX    3
  2350. #define ODT_BUTTON    4
  2351.  
  2352. /* Owner draw actions */
  2353. #define ODA_DRAWENTIRE    0x0001
  2354. #define ODA_SELECT    0x0002
  2355. #define ODA_FOCUS    0x0004
  2356.  
  2357. /* Owner draw state */
  2358. #define ODS_SELECTED    0x0001
  2359. #define ODS_GRAYED    0x0002
  2360. #define ODS_DISABLED    0x0004
  2361. #define ODS_CHECKED    0x0008
  2362. #define ODS_FOCUS    0x0010
  2363.  
  2364. /* MEASUREITEMSTRUCT for ownerdraw */
  2365. typedef struct tagMEASUREITEMSTRUCT
  2366.   {
  2367.     WORD    CtlType;
  2368.     WORD    CtlID;
  2369.     WORD    itemID;
  2370.     WORD    itemWidth;
  2371.     WORD    itemHeight;
  2372.     DWORD       itemData;
  2373.   } MEASUREITEMSTRUCT;
  2374. typedef MEASUREITEMSTRUCT NEAR *PMEASUREITEMSTRUCT;
  2375. typedef MEASUREITEMSTRUCT FAR  *LPMEASUREITEMSTRUCT;
  2376.  
  2377.  
  2378. /* DRAWITEMSTRUCT for ownerdraw */
  2379. typedef struct tagDRAWITEMSTRUCT
  2380.   {
  2381.     WORD    CtlType;
  2382.     WORD    CtlID;
  2383.     WORD    itemID;
  2384.     WORD    itemAction;
  2385.     WORD    itemState;
  2386.     HWND    hwndItem;
  2387.     HDC        hDC;
  2388.     RECT    rcItem;
  2389.     DWORD    itemData;
  2390.   } DRAWITEMSTRUCT;
  2391. typedef DRAWITEMSTRUCT NEAR *PDRAWITEMSTRUCT;
  2392. typedef DRAWITEMSTRUCT FAR  *LPDRAWITEMSTRUCT;
  2393.  
  2394. /* DELETEITEMSTRUCT for ownerdraw */
  2395. typedef struct tagDELETEITEMSTRUCT
  2396.   {
  2397.     WORD       CtlType;
  2398.     WORD       CtlID;
  2399.     WORD       itemID;
  2400.     HWND       hwndItem;
  2401.     DWORD      itemData;
  2402.   } DELETEITEMSTRUCT;
  2403. typedef DELETEITEMSTRUCT NEAR *PDELETEITEMSTRUCT;
  2404. typedef DELETEITEMSTRUCT FAR  *LPDELETEITEMSTRUCT;
  2405.  
  2406. /* COMPAREITEMSTUCT for ownerdraw sorting */
  2407. typedef struct tagCOMPAREITEMSTRUCT
  2408.   {
  2409.     WORD    CtlType;
  2410.     WORD    CtlID;
  2411.     HWND    hwndItem;
  2412.     WORD    itemID1;
  2413.     DWORD    itemData1;
  2414.     WORD    itemID2;
  2415.     DWORD    itemData2;
  2416.   } COMPAREITEMSTRUCT;
  2417. typedef COMPAREITEMSTRUCT NEAR *PCOMPAREITEMSTRUCT;
  2418. typedef COMPAREITEMSTRUCT FAR  *LPCOMPAREITEMSTRUCT;
  2419.  
  2420. #ifndef NOMSG
  2421.  
  2422. /* Message Function Templates */
  2423. BOOL FAR PASCAL GetMessage(LPMSG, HWND, WORD, WORD);
  2424. BOOL FAR PASCAL TranslateMessage(LPMSG);
  2425. LONG FAR PASCAL DispatchMessage(LPMSG);
  2426. BOOL FAR PASCAL PeekMessage(LPMSG, HWND, WORD, WORD, WORD);
  2427.  
  2428. /* PeekMessage() Options */
  2429. #define PM_NOREMOVE        0x0000
  2430. #define PM_REMOVE        0x0001
  2431. #define PM_NOYIELD        0x0002
  2432.  
  2433. #endif /* NOMSG */
  2434.  
  2435. #ifdef WIN_INTERNAL
  2436.     #ifndef LSTRING
  2437.     #define NOLSTRING
  2438.     #endif
  2439.     #ifndef LFILEIO
  2440.     #define NOLFILEIO
  2441.     #endif
  2442. #endif
  2443.  
  2444. #ifndef NOLSTRING
  2445. int         FAR PASCAL lstrcmp( LPSTR, LPSTR );
  2446. int         FAR PASCAL lstrcmpi( LPSTR, LPSTR );
  2447. LPSTR       FAR PASCAL lstrcpy( LPSTR, LPSTR );
  2448. LPSTR       FAR PASCAL lstrcat( LPSTR, LPSTR );
  2449. int         FAR PASCAL lstrlen( LPSTR );
  2450. #endif    /* NOLSTRING */
  2451.  
  2452. #ifndef NOLFILEIO
  2453. int         FAR PASCAL _lopen( LPSTR, int );
  2454. int         FAR PASCAL _lclose( int );
  2455. int         FAR PASCAL _lcreat( LPSTR, int );
  2456. LONG        FAR PASCAL _llseek( int, long, int );
  2457. WORD        FAR PASCAL _lread( int, LPSTR, int );
  2458. WORD        FAR PASCAL _lwrite( int, LPSTR, int );
  2459.  
  2460. #define READ        0   /* Flags for _lopen */
  2461. #define WRITE       1
  2462. #define READ_WRITE  2
  2463. #endif    /* NOLFILEIO */
  2464.  
  2465. BOOL  FAR PASCAL ExitWindows(DWORD dwReturnCode, WORD wReserved);
  2466. #define EW_RESTARTWINDOWS 0x42
  2467.  
  2468.  
  2469. BOOL  FAR PASCAL SwapMouseButton(BOOL);
  2470. DWORD FAR PASCAL GetMessagePos(void);
  2471. LONG  FAR PASCAL GetMessageTime(void);
  2472.  
  2473. #ifdef WIN31
  2474. LONG  FAR PASCAL GetMessageExtraInfo(void);
  2475. #endif /* WIN31 */
  2476.  
  2477. HWND  FAR PASCAL GetSysModalWindow(void);
  2478. HWND  FAR PASCAL SetSysModalWindow(HWND);
  2479.  
  2480. LONG  FAR PASCAL SendMessage(HWND, WORD, WORD, LONG);
  2481. BOOL  FAR PASCAL PostMessage(HWND, WORD, WORD, LONG);
  2482. BOOL  FAR PASCAL PostAppMessage(HANDLE, WORD, WORD, LONG);
  2483. void  FAR PASCAL ReplyMessage(LONG);
  2484. void  FAR PASCAL WaitMessage(void);
  2485. LONG  FAR PASCAL DefWindowProc(HWND, WORD, WORD, LONG);
  2486. void  FAR PASCAL PostQuitMessage(int);
  2487. LONG  FAR PASCAL CallWindowProc(FARPROC, HWND, WORD, WORD, LONG);
  2488. BOOL  FAR PASCAL InSendMessage(void);
  2489.  
  2490. WORD  FAR PASCAL GetDoubleClickTime(void);
  2491. void  FAR PASCAL SetDoubleClickTime(WORD);
  2492.  
  2493. BOOL  FAR PASCAL RegisterClass(LPWNDCLASS);
  2494. BOOL  FAR PASCAL UnregisterClass(LPSTR, HANDLE);
  2495. BOOL  FAR PASCAL GetClassInfo(HANDLE, LPSTR, LPWNDCLASS);
  2496.  
  2497. BOOL  FAR PASCAL SetMessageQueue(int);
  2498.  
  2499. #define CW_USEDEFAULT        ((int)0x8000)
  2500. HWND  FAR PASCAL CreateWindow(LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  2501. HWND  FAR PASCAL CreateWindowEx(DWORD, LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  2502.  
  2503. BOOL FAR PASCAL IsWindow(HWND);
  2504. BOOL FAR PASCAL IsChild(HWND, HWND);
  2505. BOOL FAR PASCAL DestroyWindow(HWND);
  2506.  
  2507. BOOL FAR PASCAL ShowWindow(HWND, int);
  2508. BOOL FAR PASCAL FlashWindow(HWND, BOOL);
  2509. void FAR PASCAL ShowOwnedPopups(HWND, BOOL);
  2510.  
  2511. BOOL FAR PASCAL OpenIcon(HWND);
  2512. void FAR PASCAL CloseWindow(HWND);
  2513. void FAR PASCAL MoveWindow(HWND, int, int, int, int, BOOL);
  2514. void FAR PASCAL SetWindowPos(HWND, HWND, int, int, int, int, WORD);
  2515.  
  2516. #ifndef NODEFERWINDOWPOS
  2517.  
  2518. HANDLE FAR PASCAL BeginDeferWindowPos(int nNumWindows);
  2519. HANDLE FAR PASCAL DeferWindowPos(HANDLE hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, WORD wFlags);
  2520. void FAR PASCAL EndDeferWindowPos(HANDLE hWinPosInfo);
  2521.  
  2522. #endif /* NODEFERWINDOWPOS */
  2523.  
  2524. BOOL FAR PASCAL IsWindowVisible(HWND);
  2525. BOOL FAR PASCAL IsIconic(HWND);
  2526. BOOL FAR PASCAL AnyPopup(void);
  2527. void FAR PASCAL BringWindowToTop(HWND);
  2528. BOOL FAR PASCAL IsZoomed(HWND);
  2529.  
  2530. /* SetWindowPos() and WINDOWPOS flags */
  2531. #define SWP_NOSIZE        0x0001
  2532. #define SWP_NOMOVE        0x0002
  2533. #define SWP_NOZORDER        0x0004
  2534. #define SWP_NOREDRAW        0x0008
  2535. #define SWP_NOACTIVATE        0x0010
  2536. #define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
  2537. #define SWP_SHOWWINDOW        0x0040
  2538. #define SWP_HIDEWINDOW        0x0080
  2539. #define SWP_NOCOPYBITS        0x0100
  2540. #define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
  2541.  
  2542. #define SWP_DRAWFRAME        SWP_FRAMECHANGED
  2543. #define SWP_NOREPOSITION    SWP_NOOWNERZORDER
  2544.  
  2545.  
  2546. #ifndef NOCTLMGR
  2547.  
  2548. HWND FAR PASCAL CreateDialog(HANDLE, LPSTR, HWND, FARPROC);
  2549. HWND FAR PASCAL CreateDialogIndirect(HANDLE, LPSTR, HWND, FARPROC);
  2550. HWND FAR PASCAL CreateDialogParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2551. HWND FAR PASCAL CreateDialogIndirectParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2552. int  FAR PASCAL DialogBox(HANDLE, LPSTR, HWND, FARPROC);
  2553. int  FAR PASCAL DialogBoxIndirect(HANDLE, HANDLE, HWND, FARPROC);
  2554. int  FAR PASCAL DialogBoxParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2555. int  FAR PASCAL DialogBoxIndirectParam(HANDLE, HANDLE, HWND, FARPROC, LONG);
  2556. void FAR PASCAL EndDialog(HWND, int);
  2557. HWND FAR PASCAL GetDlgItem(HWND, int);
  2558. void FAR PASCAL SetDlgItemInt(HWND, int, WORD, BOOL);
  2559. WORD FAR PASCAL GetDlgItemInt(HWND, int, BOOL FAR *, BOOL);
  2560. void FAR PASCAL SetDlgItemText(HWND, int, LPSTR);
  2561. int  FAR PASCAL GetDlgItemText(HWND, int, LPSTR, int);
  2562. void FAR PASCAL CheckDlgButton(HWND, int, WORD);
  2563. void FAR PASCAL CheckRadioButton(HWND, int, int, int);
  2564. WORD FAR PASCAL IsDlgButtonChecked(HWND, int);
  2565. LONG FAR PASCAL SendDlgItemMessage(HWND, int, WORD, WORD, LONG);
  2566. HWND FAR PASCAL GetNextDlgGroupItem(HWND, HWND, BOOL);
  2567. HWND FAR PASCAL GetNextDlgTabItem(HWND, HWND, BOOL);
  2568. int  FAR PASCAL GetDlgCtrlID(HWND);
  2569. long FAR PASCAL GetDialogBaseUnits(void);
  2570. LONG FAR PASCAL DefDlgProc(HWND, WORD, WORD, LONG);
  2571. #define DLGWINDOWEXTRA   30     /* Window extra byted needed for private dialog classes */
  2572.  
  2573. #endif /* NOCTLMGR */
  2574.  
  2575. #ifndef NOMSG
  2576. BOOL FAR PASCAL CallMsgFilter(LPMSG, int);
  2577. #endif
  2578.  
  2579. #ifndef NOCLIPBOARD
  2580.  
  2581. /* Clipboard Manager Functions */
  2582. BOOL   FAR PASCAL OpenClipboard(HWND);
  2583. BOOL   FAR PASCAL CloseClipboard(void);
  2584.  
  2585. #ifdef WIN31
  2586. HWND   FAR PASCAL GetOpenClipboardWindow(void);
  2587. #endif /* WIN31 */
  2588.  
  2589. HWND   FAR PASCAL GetClipboardOwner(void);
  2590. HWND   FAR PASCAL SetClipboardViewer(HWND);
  2591. HWND   FAR PASCAL GetClipboardViewer(void);
  2592. BOOL   FAR PASCAL ChangeClipboardChain(HWND, HWND);
  2593. HANDLE FAR PASCAL SetClipboardData(WORD, HANDLE);
  2594. HANDLE FAR PASCAL GetClipboardData(WORD);
  2595. WORD   FAR PASCAL RegisterClipboardFormat(LPSTR);
  2596. int    FAR PASCAL CountClipboardFormats(void);
  2597. WORD   FAR PASCAL EnumClipboardFormats(WORD);
  2598. int    FAR PASCAL GetClipboardFormatName(WORD, LPSTR, int);
  2599. BOOL   FAR PASCAL EmptyClipboard(void);
  2600. BOOL   FAR PASCAL IsClipboardFormatAvailable(WORD);
  2601. int    FAR PASCAL GetPriorityClipboardFormat(WORD  FAR *, int);
  2602.  
  2603. #endif /* NOCLIPBOARD */
  2604.  
  2605. HWND FAR PASCAL SetFocus(HWND);
  2606. HWND FAR PASCAL GetFocus(void);
  2607. HWND FAR PASCAL GetActiveWindow(void);
  2608. int  FAR PASCAL GetKeyState(int);
  2609. int  FAR PASCAL GetAsyncKeyState(int);
  2610. void FAR PASCAL GetKeyboardState(BYTE FAR *);
  2611. void FAR PASCAL SetKeyboardState(BYTE FAR *);
  2612. BOOL FAR PASCAL EnableHardwareInput(BOOL);
  2613. BOOL FAR PASCAL GetInputState(void);
  2614. HWND FAR PASCAL GetCapture(void);
  2615. HWND FAR PASCAL SetCapture(HWND);
  2616. void FAR PASCAL ReleaseCapture(void);
  2617.  
  2618. #ifdef WIN31
  2619.  
  2620. DWORD FAR PASCAL GetQueueStatus(WORD flags);
  2621.  
  2622. /* GetQueueStatus flags */
  2623. #define QS_KEY        0x0001
  2624. #define QS_MOUSEMOVE    0x0002
  2625. #define QS_MOUSEBUTTON    0x0004
  2626. #define QS_MOUSE    (QS_MOUSEMOVE | QS_MOUSEBUTTON)
  2627. #define QS_POSTMESSAGE    0x0008
  2628. #define QS_TIMER    0x0010
  2629. #define QS_PAINT    0x0020
  2630. #define QS_SENDMESSAGE    0x0040
  2631. #define QS_HOTKEYEVENT    0x0080        /* (WIN 3.1 ONLY) */
  2632.  
  2633. WORD FAR PASCAL GetSysInputMode(void);
  2634.  
  2635. /* GetSysInputMode return values */
  2636. #define IMD_NONE        0
  2637. #define IMD_MENU        1
  2638. #define IMD_DIALOGBOX        2
  2639. #define IMD_NEXTWINDOW        3
  2640. #define IMD_SCROLLBAR        4
  2641. #define IMD_TITLEBUTTONTRACK    5
  2642. #define IMD_MOVESIZETRACK    6
  2643. #define IMD_SYSERRDLG        7
  2644. #define IMD_DRAGOBJECT        8
  2645. #define IMD_DRAGDETECT        9
  2646.  
  2647. typedef BOOL (FAR PASCAL *HOTKEYPROC)(unsigned msg, WORD key, WORD flags, DWORD extrainfo);
  2648.  
  2649. BOOL FAR PASCAL SetHotKeyHook(HOTKEYPROC pfn, HANDLE hmodule, BOOL fHook);
  2650. BOOL FAR PASCAL PostHotKeyEvent(HANDLE hTask);
  2651.  
  2652. #define HKF_EXTENDED    0x0100        /* hot key proc flags parameter bit */
  2653.  
  2654. #endif    /* WIN31 */
  2655.  
  2656. /* Windows Functions */
  2657. WORD FAR PASCAL SetTimer(HWND, int, WORD, FARPROC);
  2658. BOOL FAR PASCAL KillTimer(HWND, int);
  2659.  
  2660. BOOL FAR PASCAL EnableWindow(HWND,BOOL);
  2661. BOOL FAR PASCAL IsWindowEnabled(HWND);
  2662.  
  2663. HANDLE FAR PASCAL LoadAccelerators(HANDLE, LPSTR);
  2664.  
  2665. #ifndef NOMSG
  2666. int  FAR PASCAL TranslateAccelerator(HWND, HANDLE, LPMSG);
  2667. #endif
  2668.  
  2669. #ifndef NOSYSMETRICS
  2670.  
  2671. /* GetSystemMetrics() codes */
  2672. #define SM_CXSCREEN         0
  2673. #define SM_CYSCREEN         1
  2674. #define SM_CXVSCROLL         2
  2675. #define SM_CYHSCROLL         3
  2676. #define SM_CYCAPTION         4
  2677. #define SM_CXBORDER         5
  2678. #define SM_CYBORDER         6
  2679. #define SM_CXDLGFRAME         7
  2680. #define SM_CYDLGFRAME         8
  2681. #define SM_CYVTHUMB         9
  2682. #define SM_CXHTHUMB         10
  2683. #define SM_CXICON         11
  2684. #define SM_CYICON         12
  2685. #define SM_CXCURSOR         13
  2686. #define SM_CYCURSOR         14
  2687. #define SM_CYMENU         15
  2688. #define SM_CXFULLSCREEN      16
  2689. #define SM_CYFULLSCREEN      17
  2690. #define SM_CYKANJIWINDOW     18
  2691. #define SM_MOUSEPRESENT      19
  2692. #define SM_CYVSCROLL         20
  2693. #define SM_CXHSCROLL         21
  2694. #define SM_DEBUG         22
  2695. #define SM_SWAPBUTTON         23
  2696. #define SM_RESERVED1         24
  2697. #define SM_RESERVED2         25
  2698. #define SM_RESERVED3         26
  2699. #define SM_RESERVED4         27
  2700. #define SM_CXMIN         28
  2701. #define SM_CYMIN         29
  2702. #define SM_CXSIZE         30
  2703. #define SM_CYSIZE         31
  2704. #define SM_CXFRAME         32
  2705. #define SM_CYFRAME         33
  2706. #define SM_CXMINTRACK         34
  2707. #define SM_CYMINTRACK         35
  2708.  
  2709. #ifdef WIN31
  2710. #define SM_CXDOUBLECLK       36
  2711. #define SM_CYDOUBLECLK       37
  2712. #define SM_CXICONSPACING     38
  2713. #define SM_CYICONSPACING     39
  2714. #define SM_MENUDROPALIGNMENT 40
  2715. #define SM_PENWINDOWS        41
  2716. #endif /* WIN31 */
  2717.  
  2718. #define SM_CMETRICS         42
  2719.  
  2720. int FAR PASCAL GetSystemMetrics(int);
  2721.  
  2722. #endif /* NOSYSMETRICS */
  2723.  
  2724. #ifndef NOMENUS
  2725.  
  2726. HMENU FAR PASCAL LoadMenu(HANDLE, LPSTR);
  2727. HMENU FAR PASCAL LoadMenuIndirect(LPSTR);
  2728. HMENU FAR PASCAL GetMenu(HWND);
  2729. BOOL  FAR PASCAL SetMenu(HWND, HMENU);
  2730. BOOL  FAR PASCAL ChangeMenu(HMENU, WORD, LPSTR, WORD, WORD);
  2731. BOOL  FAR PASCAL HiliteMenuItem(HWND, HMENU, WORD, WORD);
  2732. int   FAR PASCAL GetMenuString(HMENU, WORD, LPSTR, int, WORD);
  2733. WORD  FAR PASCAL GetMenuState(HMENU, WORD, WORD);
  2734. void  FAR PASCAL DrawMenuBar(HWND);
  2735. HMENU FAR PASCAL GetSystemMenu(HWND, BOOL);
  2736. HMENU FAR PASCAL CreateMenu(void);
  2737. HMENU FAR PASCAL CreatePopupMenu(void);
  2738. BOOL  FAR PASCAL DestroyMenu(HMENU);
  2739. BOOL  FAR PASCAL CheckMenuItem(HMENU, WORD, WORD);
  2740. BOOL  FAR PASCAL EnableMenuItem(HMENU, WORD, WORD);
  2741. HMENU FAR PASCAL GetSubMenu(HMENU, int);
  2742. WORD  FAR PASCAL GetMenuItemID(HMENU, int);
  2743. WORD  FAR PASCAL GetMenuItemCount(HMENU);
  2744.  
  2745. BOOL  FAR PASCAL InsertMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2746. BOOL  FAR PASCAL AppendMenu(HMENU, WORD, WORD, LPSTR);
  2747. BOOL  FAR PASCAL ModifyMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2748. BOOL  FAR PASCAL RemoveMenu(HMENU, WORD, WORD);
  2749. BOOL  FAR PASCAL DeleteMenu(HMENU, WORD, WORD);
  2750. BOOL  FAR PASCAL SetMenuItemBitmaps(HMENU, WORD, WORD, HBITMAP, HBITMAP);
  2751. LONG  FAR PASCAL GetMenuCheckMarkDimensions(void);
  2752.  
  2753. BOOL  FAR PASCAL TrackPopupMenu(HMENU, WORD, int, int, int, HWND, LPRECT);
  2754. /* Flags for TrackPopupMenu */
  2755. #define TPM_LEFTBUTTON  0x0000
  2756.  
  2757. #ifdef WIN31
  2758. #define TPM_RIGHTBUTTON 0x0002
  2759. #define TPM_LEFTALIGN   0x0000
  2760. #define TPM_CENTERALIGN 0x0004
  2761. #define TPM_RIGHTALIGN  0x0008
  2762. #endif /* WIN31 */
  2763.  
  2764. #endif /* NOMENUS */
  2765.  
  2766. BOOL FAR PASCAL GrayString(HDC, HBRUSH, FARPROC, DWORD, int, int, int, int, int);
  2767. void FAR PASCAL UpdateWindow(HWND);
  2768. HWND FAR PASCAL SetActiveWindow(HWND);
  2769.  
  2770. HDC  FAR PASCAL BeginPaint(HWND, LPPAINTSTRUCT);
  2771. void FAR PASCAL EndPaint(HWND, LPPAINTSTRUCT);
  2772. BOOL FAR PASCAL GetUpdateRect(HWND, LPRECT, BOOL);
  2773. int  FAR PASCAL GetUpdateRgn(HWND, HRGN, BOOL);
  2774.  
  2775. int  FAR PASCAL ExcludeUpdateRgn(HDC, HWND);
  2776.  
  2777. void FAR PASCAL InvalidateRect(HWND, LPRECT, BOOL);
  2778. void FAR PASCAL ValidateRect(HWND, LPRECT);
  2779.  
  2780. void FAR PASCAL InvalidateRgn(HWND, HRGN, BOOL);
  2781. void FAR PASCAL ValidateRgn(HWND, HRGN);
  2782.  
  2783. #ifdef WIN31
  2784.  
  2785. BOOL FAR PASCAL RedrawWindow(HWND hwnd,
  2786.     LPRECT lprcUpdate, HRGN hrgnUpdate, WORD flags);
  2787.  
  2788. /* RedrawWindow() flags */
  2789. #define RDW_INVALIDATE        0x0001
  2790. #define RDW_INTERNALPAINT    0x0002
  2791. #define RDW_ERASE        0x0004
  2792.  
  2793. #define RDW_VALIDATE        0x0008
  2794. #define RDW_NOINTERNALPAINT    0x0010
  2795. #define RDW_NOERASE        0x0020
  2796.  
  2797. #define RDW_NOCHILDREN        0x0040
  2798. #define RDW_ALLCHILDREN     0x0080
  2799.  
  2800. #define RDW_UPDATENOW        0x0100
  2801. #define RDW_ERASENOW        0x0200
  2802.  
  2803.  
  2804. /* Window draw buffering */
  2805. BOOL FAR PASCAL BeginDrawBuffer(HWND hwnd);
  2806. BOOL FAR PASCAL EndDrawBuffer(HWND hwnd);
  2807. BOOL FAR PASCAL FlushDrawBuffer(HWND hwnd);
  2808.  
  2809.  
  2810. /* LockWindowUpdate API */
  2811. BOOL FAR PASCAL LockWindowUpdate(HWND hwndLock);
  2812.  
  2813. #endif /* WIN31 */
  2814.  
  2815. void FAR PASCAL ScrollWindow(HWND, int, int, LPRECT, LPRECT);
  2816. BOOL FAR PASCAL ScrollDC(HDC, int, int, LPRECT, LPRECT, HRGN, LPRECT);
  2817.  
  2818. #ifdef WIN31
  2819.  
  2820. int FAR PASCAL ScrollWindowEx(
  2821.     HWND hwnd,
  2822.     int dx,
  2823.     int dy,
  2824.     LPRECT prcScroll,
  2825.     LPRECT prcClip,
  2826.     HRGN hrgnUpdate,
  2827.     LPRECT prcUpdate,
  2828.     WORD flags);
  2829.  
  2830. #define SW_SCROLLCHILDREN   0x0001  /* Scroll children within *lprcScroll. */
  2831. #define SW_INVALIDATE        0x0002  /* Invalidate after scrolling */
  2832. #define SW_ERASE        0x0004  /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */
  2833.  
  2834.  
  2835. #endif /* WIN31 */
  2836.  
  2837. #ifndef NOSCROLL
  2838. int  FAR PASCAL SetScrollPos(HWND, int, int, BOOL);
  2839. int  FAR PASCAL GetScrollPos(HWND, int);
  2840. void FAR PASCAL SetScrollRange(HWND, int, int, int, BOOL);
  2841. void FAR PASCAL GetScrollRange(HWND, int, LPINT, LPINT);
  2842. void FAR PASCAL ShowScrollBar(HWND, WORD, BOOL);
  2843. BOOL FAR PASCAL EnableScrollBar(HWND, WORD, WORD);
  2844. #endif
  2845.  
  2846. BOOL   FAR PASCAL SetProp(HWND, LPSTR, HANDLE);
  2847. HANDLE FAR PASCAL GetProp(HWND, LPSTR);
  2848. HANDLE FAR PASCAL RemoveProp(HWND, LPSTR);
  2849. int    FAR PASCAL EnumProps(HWND, FARPROC);
  2850. void   FAR PASCAL SetWindowText(HWND, LPSTR);
  2851. int    FAR PASCAL GetWindowText(HWND, LPSTR, int);
  2852. int    FAR PASCAL GetWindowTextLength(HWND);
  2853.  
  2854. void FAR PASCAL GetClientRect(HWND, LPRECT);
  2855. void FAR PASCAL GetWindowRect(HWND, LPRECT);
  2856. void FAR PASCAL AdjustWindowRect(LPRECT, LONG, BOOL);
  2857. void FAR PASCAL AdjustWindowRectEx(LPRECT, LONG, BOOL, DWORD);
  2858.  
  2859. #ifndef NOMB
  2860.  
  2861. /* MessageBox() Flags */
  2862. #define MB_OK            0x0000
  2863. #define MB_OKCANCEL        0x0001
  2864. #define MB_ABORTRETRYIGNORE 0x0002
  2865. #define MB_YESNOCANCEL        0x0003
  2866. #define MB_YESNO        0x0004
  2867. #define MB_RETRYCANCEL        0x0005
  2868.  
  2869. #define MB_ICONHAND        0x0010
  2870. #define MB_ICONQUESTION        0x0020
  2871. #define MB_ICONEXCLAMATION  0x0030
  2872. #define MB_ICONASTERISK     0x0040
  2873.  
  2874. #define MB_ICONINFORMATION  MB_ICONASTERISK
  2875. #define MB_ICONSTOP        MB_ICONHAND
  2876.  
  2877. #define MB_DEFBUTTON1        0x0000
  2878. #define MB_DEFBUTTON2        0x0100
  2879. #define MB_DEFBUTTON3        0x0200
  2880.  
  2881. #define MB_APPLMODAL        0x0000
  2882. #define MB_SYSTEMMODAL        0x1000
  2883. #define MB_TASKMODAL        0x2000
  2884.  
  2885. #define MB_NOFOCUS        0x8000
  2886.  
  2887. #define MB_TYPEMASK        0x000F
  2888. #define MB_ICONMASK        0x00F0
  2889. #define MB_DEFMASK        0x0F00
  2890. #define MB_MODEMASK        0x3000
  2891. #define MB_MISCMASK        0xC000
  2892.  
  2893. int  FAR PASCAL MessageBox(HWND, LPSTR, LPSTR, WORD);
  2894. void FAR PASCAL MessageBeep(WORD);
  2895.  
  2896. #endif /* NOMB */
  2897.  
  2898. int    FAR PASCAL ShowCursor(BOOL);
  2899. void    FAR PASCAL SetCursorPos(int, int);
  2900.  
  2901. #ifdef WIN31
  2902. HCURSOR FAR PASCAL GetCursor(void);
  2903. #endif /* WIN31 */
  2904.  
  2905. HCURSOR FAR PASCAL SetCursor(HCURSOR);
  2906. void    FAR PASCAL GetCursorPos(LPPOINT);
  2907. void    FAR PASCAL ClipCursor(LPRECT);
  2908. #ifdef WIN31
  2909. void    FAR PASCAL GetClipCursor(LPRECT);
  2910. #endif
  2911.  
  2912.  
  2913. void FAR PASCAL CreateCaret(HWND, HBITMAP, int, int);
  2914. WORD FAR PASCAL GetCaretBlinkTime(void);
  2915. void FAR PASCAL SetCaretBlinkTime(WORD);
  2916. void FAR PASCAL DestroyCaret(void);
  2917. void FAR PASCAL HideCaret(HWND);
  2918. void FAR PASCAL ShowCaret(HWND);
  2919. void FAR PASCAL SetCaretPos(int, int);
  2920. void FAR PASCAL GetCaretPos(LPPOINT);
  2921.  
  2922. void FAR PASCAL ClientToScreen(HWND, LPPOINT);
  2923. void FAR PASCAL ScreenToClient(HWND, LPPOINT);
  2924. HWND FAR PASCAL WindowFromPoint(POINT);
  2925. HWND FAR PASCAL ChildWindowFromPoint(HWND, POINT);
  2926.  
  2927. #ifndef NOCOLOR
  2928.  
  2929. /* Color Types */
  2930. #define CTLCOLOR_MSGBOX        0
  2931. #define CTLCOLOR_EDIT        1
  2932. #define CTLCOLOR_LISTBOX    2
  2933. #define CTLCOLOR_BTN        3
  2934. #define CTLCOLOR_DLG        4
  2935. #define CTLCOLOR_SCROLLBAR    5
  2936. #define CTLCOLOR_STATIC        6
  2937. #define CTLCOLOR_MAX        8     /* three bits max */
  2938.  
  2939. #define COLOR_SCROLLBAR           0
  2940. #define COLOR_BACKGROUND       1
  2941. #define COLOR_ACTIVECAPTION       2
  2942. #define COLOR_INACTIVECAPTION       3
  2943. #define COLOR_MENU           4
  2944. #define COLOR_WINDOW           5
  2945. #define COLOR_WINDOWFRAME       6
  2946. #define COLOR_MENUTEXT           7
  2947. #define COLOR_WINDOWTEXT       8
  2948. #define COLOR_CAPTIONTEXT         9
  2949. #define COLOR_ACTIVEBORDER      10
  2950. #define COLOR_INACTIVEBORDER      11
  2951. #define COLOR_APPWORKSPACE      12
  2952. #define COLOR_HIGHLIGHT          13
  2953. #define COLOR_HIGHLIGHTTEXT      14
  2954. #define COLOR_BTNFACE             15
  2955. #define COLOR_BTNSHADOW           16
  2956. #define COLOR_GRAYTEXT            17
  2957. #define COLOR_BTNTEXT          18
  2958.  
  2959. #ifdef WIN31
  2960. #define COLOR_INACTIVECAPTIONTEXT 19
  2961. #define COLOR_ENDCOLORS       COLOR_INACTIVECAPTIONTEXT
  2962. #else  /* WIN31 */
  2963. #define COLOR_ENDCOLORS       COLOR_BTNTEXT
  2964. #endif    /* WIN31 */
  2965.  
  2966. DWORD FAR PASCAL GetSysColor(int);
  2967. void  FAR PASCAL SetSysColors(int, LPINT, LONG FAR *);
  2968.  
  2969. #endif /* NOCOLOR */
  2970.  
  2971. BOOL FAR PASCAL FillRgn(HDC, HRGN, HBRUSH);
  2972. BOOL FAR PASCAL FrameRgn(HDC, HRGN, HBRUSH, int, int);
  2973. BOOL FAR PASCAL InvertRgn(HDC, HRGN);
  2974. BOOL FAR PASCAL PaintRgn(HDC, HRGN);
  2975. BOOL FAR PASCAL PtInRegion(HRGN, int, int);
  2976.  
  2977. void FAR PASCAL DrawFocusRect(HDC, LPRECT);
  2978. int  FAR PASCAL FillRect(HDC, LPRECT, HBRUSH);
  2979. int  FAR PASCAL FrameRect(HDC, LPRECT, HBRUSH);
  2980. void FAR PASCAL InvertRect(HDC, LPRECT);
  2981. void FAR PASCAL SetRect(LPRECT, int, int, int, int);
  2982. void FAR PASCAL SetRectEmpty(LPRECT);
  2983. int  FAR PASCAL CopyRect(LPRECT, LPRECT);
  2984. void FAR PASCAL InflateRect(LPRECT, int, int);
  2985. int  FAR PASCAL IntersectRect(LPRECT, LPRECT, LPRECT);
  2986. int  FAR PASCAL UnionRect(LPRECT, LPRECT, LPRECT);
  2987. void FAR PASCAL OffsetRect(LPRECT, int, int);
  2988. BOOL FAR PASCAL IsRectEmpty(LPRECT);
  2989. BOOL FAR PASCAL EqualRect(LPRECT, LPRECT);
  2990. BOOL FAR PASCAL PtInRect(LPRECT, POINT);
  2991. BOOL FAR PASCAL RectVisible(HDC, LPRECT);
  2992. BOOL FAR PASCAL RectInRegion(HRGN, LPRECT);
  2993.  
  2994. DWORD FAR PASCAL GetCurrentTime(void);
  2995. DWORD FAR PASCAL GetTickCount(void);
  2996.  
  2997. #ifndef NOWINOFFSETS
  2998.  
  2999. WORD FAR PASCAL GetWindowWord(HWND, int);
  3000. WORD FAR PASCAL SetWindowWord(HWND, int, WORD);
  3001. LONG FAR PASCAL GetWindowLong(HWND, int);
  3002. LONG FAR PASCAL SetWindowLong(HWND, int, LONG);
  3003. WORD FAR PASCAL GetClassWord(HWND, int);
  3004. WORD FAR PASCAL SetClassWord(HWND, int, WORD);
  3005. LONG FAR PASCAL GetClassLong(HWND, int);
  3006. LONG FAR PASCAL SetClassLong(HWND, int, LONG);
  3007. HWND FAR PASCAL GetDesktopHwnd(void);
  3008. HWND FAR PASCAL GetDesktopWindow(void);
  3009.  
  3010. #endif /* NOWINOFFSETS */
  3011.  
  3012. HWND   FAR PASCAL GetParent(HWND);
  3013. HWND   FAR PASCAL SetParent(HWND, HWND);
  3014. BOOL   FAR PASCAL EnumChildWindows(HWND, FARPROC, LONG);
  3015. HWND   FAR PASCAL FindWindow(LPSTR, LPSTR);
  3016. BOOL   FAR PASCAL EnumWindows(FARPROC, LONG);
  3017. BOOL   FAR PASCAL EnumTaskWindows(HANDLE, FARPROC, LONG);
  3018. int    FAR PASCAL GetClassName(HWND, LPSTR, int);
  3019. HWND   FAR PASCAL GetTopWindow(HWND);
  3020. HWND   FAR PASCAL GetNextWindow(HWND, WORD);
  3021. HANDLE FAR PASCAL GetWindowTask(HWND);
  3022. HWND   FAR PASCAL GetLastActivePopup(HWND);
  3023.  
  3024. /* GetWindow() Constants */
  3025. #define GW_HWNDFIRST        0
  3026. #define GW_HWNDLAST        1
  3027. #define GW_HWNDNEXT        2
  3028. #define GW_HWNDPREV        3
  3029. #define GW_OWNER        4
  3030. #define GW_CHILD        5
  3031.  
  3032. HWND FAR PASCAL GetWindow(HWND, WORD);
  3033.  
  3034. #ifndef NOWH
  3035.  
  3036. FARPROC FAR PASCAL SetWindowsHook(int, FARPROC);
  3037. BOOL    FAR PASCAL UnhookWindowsHook(int, FARPROC);
  3038. DWORD    FAR PASCAL DefHookProc(int, WORD, DWORD, FARPROC FAR *);
  3039.  
  3040. #ifdef WIN31
  3041.  
  3042. typedef DWORD HHOOK;
  3043. typedef DWORD (FAR PASCAL *HOOKPROC)(int code, WORD wParam, LONG lParam);
  3044.  
  3045. HHOOK FAR PASCAL SetWindowsHookEx(int idHook, HOOKPROC lpfn, HANDLE hModule, HANDLE hTask);
  3046. BOOL  FAR PASCAL UnhookWindowsHookEx(HHOOK hHook);
  3047. DWORD FAR PASCAL CallNextHookEx(HHOOK hHook, int code, WORD wParam, LONG lParam);
  3048.  
  3049. #endif    /* WIN31 */
  3050.  
  3051. /* SetWindowsHook() codes */
  3052. #define WH_MSGFILTER        (-1)
  3053. #define WH_JOURNALRECORD    0
  3054. #define WH_JOURNALPLAYBACK  1
  3055. #define WH_KEYBOARD        2
  3056. #define WH_GETMESSAGE        3
  3057. #define WH_CALLWNDPROC        4
  3058.  
  3059. #ifdef WIN31
  3060.  
  3061. #define WH_CBT            5
  3062. #define WH_SYSMSGFILTER        6
  3063. #define WH_MOUSE        7
  3064. #define WH_HARDWARE        8
  3065. #define WH_DEBUG        9
  3066. #define WH_VISRGN        10
  3067.  
  3068.  
  3069. #endif    /* WIN31 */
  3070.  
  3071. /* Hook Codes */
  3072.  
  3073. #define HC_GETLPLPFN        (-3)
  3074. #define HC_LPLPFNNEXT        (-2)
  3075. #define HC_LPFNNEXT        (-1)
  3076. #define HC_ACTION        0
  3077. #define HC_GETNEXT        1
  3078. #define HC_SKIP         2
  3079. #define HC_NOREM        3
  3080. #define HC_NOREMOVE        3
  3081. #define HC_SYSMODALON       4
  3082. #define HC_SYSMODALOFF        5
  3083.  
  3084. #ifdef WIN31
  3085.  
  3086. /* CBT Hook Codes */
  3087. #define HCBT_MOVESIZE        0
  3088. #define HCBT_MINMAX        1
  3089. #define HCBT_QS         2
  3090. #define HCBT_CREATEWND        3
  3091. #define HCBT_DESTROYWND        4
  3092. #define HCBT_ACTIVATE        5
  3093. #define HCBT_CLICKSKIPPED   6
  3094. #define HCBT_KEYSKIPPED     7
  3095. #define HCBT_SYSCOMMAND        8
  3096. #define HCBT_SETFOCUS        9
  3097.  
  3098. /* HCBT_CREATEWND parameters pointed to by lParam */
  3099. typedef struct tagCBT_CREATEWND
  3100. {
  3101.     LPCREATESTRUCT lpcs;
  3102.     HWND       hwndInsertAfter;
  3103. } CBT_CREATEWND;
  3104. typedef CBT_CREATEWND FAR* LPCBT_CREATEWND;
  3105.  
  3106. /* WH_VISRGN parameters pointed to by lParam */
  3107. typedef struct tagWH_VISRGN_PARAMS
  3108. {
  3109.     WORD code;
  3110.     HRGN hrgn;
  3111.     HWND hwnd;
  3112.     HWND hwndStop;
  3113. } WH_VISRGN_PARAMS;
  3114. typedef WH_VISRGN_PARAMS FAR* LPWH_VISRGN_PARAMS;
  3115.  
  3116. /* WH_VISRGN_PARAMS code values */
  3117. #define VRH_INTERSECT        0        /* Intersect with area of hwnd */
  3118. #define VRH_EXCLUDE        1        /* Exclude windows from hwnd..hwndStop */
  3119.  
  3120. /* Default WH_VISRGN hook handler function */
  3121.  
  3122. DWORD FAR PASCAL DefVisRgnHook(WH_VISRGN_PARAMS FAR *);
  3123.  
  3124. /* InvalidateDCCache() flag values */
  3125. #define IDC_DEFAULT        0x0001
  3126. #define IDC_CHILDRENONLY    0x0002
  3127. #define IDC_CLIENTONLY        0x0004
  3128.  
  3129. BOOL FAR PASCAL InvalidateDCCache(HWND hwnd, WORD flags);
  3130.  
  3131. #endif    /* WIN31 */
  3132.  
  3133. /* WH_MSGFILTER Filter Proc Codes */
  3134. #define MSGF_DIALOGBOX             0
  3135. #define MSGF_MENU             2
  3136. #define MSGF_MOVE             3
  3137. #define MSGF_SIZE             4
  3138. #define MSGF_SCROLLBAR             5
  3139. #define MSGF_NEXTWINDOW             6
  3140.  
  3141. /* Window Manager Hook Codes */
  3142. #define WC_INIT            1
  3143. #define WC_SWP            2
  3144. #define WC_DEFWINDOWPROC    3
  3145. #define WC_MINMAX        4
  3146. #define WC_MOVE            5
  3147. #define WC_SIZE            6
  3148. #define WC_DRAWCAPTION        7
  3149.  
  3150. #ifdef WIN31
  3151. typedef struct tagMOUSEHOOKSTRUCT
  3152.   {
  3153.     POINT   pt;
  3154.     HWND    hwnd;
  3155.     WORD    wHitTestCode;
  3156.     DWORD   dwExtraInfo;
  3157.   } MOUSEHOOKSTRUCT;
  3158. typedef MOUSEHOOKSTRUCT  FAR *LPMOUSEHOOKSTRUCT;
  3159.  
  3160. typedef struct tagCBTACTIVATESTRUCT
  3161.   {
  3162.     BOOL    fMouse;
  3163.     HWND    hWndActive;
  3164.   } CBTACTIVATESTRUCT;
  3165.  
  3166. typedef struct tagHARDWAREHOOKSTRUCT
  3167.   {
  3168.     HWND    hWnd;
  3169.     WORD    wMessage;
  3170.     WORD    wParam;
  3171.     DWORD   lParam;
  3172.   } HARDWAREHOOKSTRUCT;
  3173.  
  3174. #endif /* WIN31 */
  3175.  
  3176. /* Message Structure used in Journaling */
  3177. typedef struct tagEVENTMSG
  3178.   {
  3179.     WORD    message;
  3180.     WORD    paramL;
  3181.     WORD    paramH;
  3182.     DWORD   time;
  3183.   } EVENTMSG;
  3184. typedef EVENTMSG        *PEVENTMSGMSG;
  3185. typedef EVENTMSG NEAR        *NPEVENTMSGMSG;
  3186. typedef EVENTMSG FAR        *LPEVENTMSGMSG;
  3187.  
  3188. #endif    /* NOWH */
  3189.  
  3190. #ifndef NOMENUS
  3191.  
  3192. /* Menu flags for Add/Check/EnableMenuItem() */
  3193. #define MF_INSERT       0x0000
  3194. #define MF_CHANGE       0x0080
  3195. #define MF_APPEND       0x0100
  3196. #define MF_DELETE       0x0200
  3197. #define MF_REMOVE       0x1000
  3198.  
  3199. #define MF_BYCOMMAND       0x0000
  3200. #define MF_BYPOSITION       0x0400
  3201.  
  3202.  
  3203. #define MF_SEPARATOR       0x0800
  3204.  
  3205. #define MF_ENABLED       0x0000
  3206. #define MF_GRAYED       0x0001
  3207. #define MF_DISABLED       0x0002
  3208.  
  3209. #define MF_UNCHECKED       0x0000
  3210. #define MF_CHECKED       0x0008
  3211. #define MF_USECHECKBITMAPS 0x0200
  3212.  
  3213. #define MF_STRING       0x0000
  3214. #define MF_BITMAP       0x0004
  3215. #define MF_OWNERDRAW       0x0100
  3216.  
  3217. #define MF_POPUP       0x0010
  3218. #define MF_MENUBARBREAK    0x0020
  3219. #define MF_MENUBREAK       0x0040
  3220.  
  3221. #define MF_UNHILITE       0x0000
  3222. #define MF_HILITE       0x0080
  3223.  
  3224. #define MF_SYSMENU       0x2000
  3225. #define MF_HELP           0x4000
  3226. #define MF_MOUSESELECT       0x8000
  3227.  
  3228. /* Menu item resource format */
  3229. typedef struct 
  3230.   {
  3231.     WORD versionNumber;
  3232.     WORD offset;
  3233.   } MENUITEMTEMPLATEHEADER;
  3234.  
  3235. typedef struct
  3236.   {
  3237.     WORD  mtOption;
  3238.     WORD  mtID;
  3239.     LPSTR mtString;
  3240.   } MENUITEMTEMPLATE;
  3241.  
  3242. #define MF_END             0x0080
  3243.  
  3244. #endif /* NOMENUS */
  3245.  
  3246. #ifndef NOSYSCOMMANDS
  3247.  
  3248. /* System Menu Command Values */
  3249. #define SC_SIZE        0xF000
  3250. #define SC_MOVE        0xF010
  3251. #define SC_MINIMIZE    0xF020
  3252. #define SC_MAXIMIZE    0xF030
  3253. #define SC_NEXTWINDOW    0xF040
  3254. #define SC_PREVWINDOW    0xF050
  3255. #define SC_CLOSE    0xF060
  3256. #define SC_VSCROLL    0xF070
  3257. #define SC_HSCROLL    0xF080
  3258. #define SC_MOUSEMENU    0xF090
  3259. #define SC_KEYMENU    0xF100
  3260. #define SC_ARRANGE    0xF110
  3261. #define SC_RESTORE    0xF120
  3262. #define SC_TASKLIST    0xF130
  3263. #define SC_SCREENSAVE   0xF140
  3264. #define SC_HOTKEY       0xF150
  3265.  
  3266. #define SC_ICON        SC_MINIMIZE
  3267. #define SC_ZOOM     SC_MAXIMIZE
  3268.  
  3269. #endif /* NOSYSCOMMANDS */
  3270.  
  3271. /* Resource Loading Routines */
  3272. HBITMAP FAR PASCAL LoadBitmap(HANDLE, LPSTR);
  3273. HCURSOR FAR PASCAL LoadCursor(HANDLE, LPSTR);
  3274. HCURSOR FAR PASCAL CreateCursor(HANDLE, int, int, int, int, LPSTR, LPSTR);
  3275. BOOL    FAR PASCAL DestroyCursor(HCURSOR);
  3276.  
  3277. /* Standard Cursor IDs */
  3278. #define IDC_ARROW        MAKEINTRESOURCE(32512)
  3279. #define IDC_IBEAM        MAKEINTRESOURCE(32513)
  3280. #define IDC_WAIT        MAKEINTRESOURCE(32514)
  3281. #define IDC_CROSS        MAKEINTRESOURCE(32515)
  3282. #define IDC_UPARROW        MAKEINTRESOURCE(32516)
  3283. #define IDC_SIZE        MAKEINTRESOURCE(32640)
  3284. #define IDC_ICON        MAKEINTRESOURCE(32641)
  3285. #define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
  3286. #define IDC_SIZENESW        MAKEINTRESOURCE(32643)
  3287. #define IDC_SIZEWE        MAKEINTRESOURCE(32644)
  3288. #define IDC_SIZENS        MAKEINTRESOURCE(32645)
  3289.  
  3290. HICON FAR PASCAL LoadIcon(HANDLE, LPSTR);
  3291. HICON FAR PASCAL CreateIcon(HANDLE, int, int, BYTE, BYTE, LPSTR, LPSTR);
  3292. BOOL  FAR PASCAL DestroyIcon(HICON);
  3293.  
  3294.  
  3295. #define ORD_LANGDRIVER    1    /* The ordinal number for the entry point of
  3296.                 ** language drivers.
  3297.                 */
  3298.  
  3299. #ifndef NOICONS
  3300.  
  3301. /* Standard Icon IDs */
  3302. #define IDI_APPLICATION     MAKEINTRESOURCE(32512)
  3303. #define IDI_HAND        MAKEINTRESOURCE(32513)
  3304. #define IDI_QUESTION        MAKEINTRESOURCE(32514)
  3305. #define IDI_EXCLAMATION     MAKEINTRESOURCE(32515)
  3306. #define IDI_ASTERISK        MAKEINTRESOURCE(32516)
  3307.  
  3308. #endif /* NOICONS */
  3309.  
  3310. int  FAR PASCAL LoadString(HANDLE, WORD, LPSTR, int);
  3311.  
  3312. int  FAR PASCAL AddFontResource(LPSTR);
  3313. BOOL FAR PASCAL RemoveFontResource(LPSTR);
  3314.  
  3315.  
  3316.  
  3317. /* Dialog Box Command IDs */
  3318. #define IDOK            1
  3319. #define IDCANCEL        2
  3320. #define IDABORT         3
  3321. #define IDRETRY         4
  3322. #define IDIGNORE        5
  3323. #define IDYES            6
  3324. #define IDNO            7
  3325.  
  3326. #ifndef NOCTLMGR
  3327.  
  3328. /* Control Manager Structures and Definitions */
  3329.  
  3330. #ifndef NOWINSTYLES
  3331.  
  3332. /* Edit Control Styles */
  3333. #define ES_LEFT             0x0000L
  3334. #define ES_CENTER           0x0001L
  3335. #define ES_RIGHT            0x0002L
  3336. #define ES_MULTILINE        0x0004L
  3337. #define ES_UPPERCASE        0x0008L
  3338. #define ES_LOWERCASE        0x0010L
  3339. #define ES_PASSWORD         0x0020L
  3340. #define ES_AUTOVSCROLL      0x0040L
  3341. #define ES_AUTOHSCROLL      0x0080L
  3342. #define ES_NOHIDESEL        0x0100L
  3343. #define ES_OEMCONVERT       0x0400L
  3344.  
  3345. #ifdef WIN31
  3346. #define ES_READONLY         0x0800L
  3347. #endif    /* WIN31 */
  3348.  
  3349.  
  3350. #endif /* NOWINSTYLES */
  3351.  
  3352. /* Edit Control Notification Codes */
  3353. #define EN_SETFOCUS        0x0100
  3354. #define EN_KILLFOCUS        0x0200
  3355. #define EN_CHANGE        0x0300
  3356. #define EN_UPDATE        0x0400
  3357. #define EN_ERRSPACE        0x0500
  3358. #define EN_MAXTEXT        0x0501
  3359. #define EN_HSCROLL        0x0601
  3360. #define EN_VSCROLL        0x0602
  3361.  
  3362. #ifndef NOWINMESSAGES
  3363.  
  3364. /* Edit Control Messages */
  3365. #define EM_GETSEL       (WM_USER+0)
  3366. #define EM_SETSEL       (WM_USER+1)
  3367. #define EM_GETRECT       (WM_USER+2)
  3368. #define EM_SETRECT       (WM_USER+3)
  3369. #define EM_SETRECTNP       (WM_USER+4)
  3370. #define EM_SCROLL       (WM_USER+5)
  3371. #define EM_LINESCROLL       (WM_USER+6)
  3372. #define EM_GETMODIFY       (WM_USER+8)
  3373. #define EM_SETMODIFY       (WM_USER+9)
  3374. #define EM_GETLINECOUNT    (WM_USER+10)
  3375. #define EM_LINEINDEX       (WM_USER+11)
  3376. #define EM_SETHANDLE       (WM_USER+12)
  3377. #define EM_GETHANDLE       (WM_USER+13)
  3378. #define EM_GETTHUMB       (WM_USER+14)
  3379. #define EM_LINELENGTH       (WM_USER+17)
  3380. #define EM_REPLACESEL       (WM_USER+18)
  3381. #define EM_SETFONT       (WM_USER+19)
  3382. #define EM_GETLINE       (WM_USER+20)
  3383. #define EM_LIMITTEXT       (WM_USER+21)
  3384. #define EM_CANUNDO       (WM_USER+22)
  3385. #define EM_UNDO        (WM_USER+23)
  3386. #define EM_FMTLINES       (WM_USER+24)
  3387. #define EM_LINEFROMCHAR    (WM_USER+25)
  3388. #define EM_SETWORDBREAK    (WM_USER+26)
  3389. #define EM_SETTABSTOPS       (WM_USER+27)
  3390. #define EM_SETPASSWORDCHAR (WM_USER+28)
  3391. #define EM_EMPTYUNDOBUFFER (WM_USER+29)
  3392.  
  3393. #ifdef WIN31
  3394. #define EM_GETFIRSTVISIBLE (WM_USER+30)
  3395. #define EM_SETREADONLY     (WM_USER+31)
  3396. #endif /* WIN31 */
  3397. #define EM_MSGMAX          (WM_USER+32)
  3398.  
  3399. #endif /* NOWINMESSAGES */
  3400.  
  3401. /* Button Control Styles */
  3402. #define BS_PUSHBUTTON       0x00L
  3403. #define BS_DEFPUSHBUTTON   0x01L
  3404. #define BS_CHECKBOX       0x02L
  3405. #define BS_AUTOCHECKBOX    0x03L
  3406. #define BS_RADIOBUTTON       0x04L
  3407. #define BS_3STATE       0x05L
  3408. #define BS_AUTO3STATE       0x06L
  3409. #define BS_GROUPBOX       0x07L
  3410. #define BS_USERBUTTON       0x08L
  3411. #define BS_AUTORADIOBUTTON 0x09L
  3412. #define BS_OWNERDRAW       0x0BL
  3413. #define BS_LEFTTEXT       0x20L
  3414.  
  3415.  
  3416. /* User Button Notification Codes */
  3417. #define BN_CLICKED       0
  3418. #define BN_PAINT       1
  3419. #define BN_HILITE       2
  3420. #define BN_UNHILITE       3
  3421. #define BN_DISABLE       4
  3422. #define BN_DOUBLECLICKED   5
  3423.  
  3424. /* Button Control Messages */
  3425. #define BM_GETCHECK       (WM_USER+0)
  3426. #define BM_SETCHECK       (WM_USER+1)
  3427. #define BM_GETSTATE       (WM_USER+2)
  3428. #define BM_SETSTATE       (WM_USER+3)
  3429. #define BM_SETSTYLE       (WM_USER+4)
  3430.  
  3431. /* Static Control Constants */
  3432. #define SS_LEFT        0x00L
  3433. #define SS_CENTER       0x01L
  3434. #define SS_RIGHT       0x02L
  3435. #define SS_ICON        0x03L
  3436. #define SS_BLACKRECT       0x04L
  3437. #define SS_GRAYRECT       0x05L
  3438. #define SS_WHITERECT       0x06L
  3439. #define SS_BLACKFRAME       0x07L
  3440. #define SS_GRAYFRAME       0x08L
  3441. #define SS_WHITEFRAME       0x09L
  3442. #define SS_USERITEM       0x0AL
  3443. #define SS_SIMPLE       0x0BL
  3444. #define SS_LEFTNOWORDWRAP  0x0CL
  3445. #define SS_NOPREFIX       0x80L    /* Don't do "&" character translation */
  3446.  
  3447. #ifdef WIN31
  3448. #ifndef NOWINMESSAGES
  3449. /* Static Control Mesages */
  3450. #define STM_SETICON        (WM_USER+0)
  3451. #define STM_GETICON        (WM_USER+1)
  3452. #define STM_MSGMAX         (WM_USER+2)
  3453. #endif /* NOWINMESSAGES */
  3454. #endif /* WIN31 */
  3455.  
  3456. /* Dialog Manager Routines */
  3457.  
  3458. #ifndef NOMSG
  3459. BOOL FAR PASCAL IsDialogMessage(HWND, LPMSG);
  3460. #endif
  3461.  
  3462. void FAR PASCAL MapDialogRect(HWND, LPRECT);
  3463.  
  3464. int  FAR PASCAL DlgDirList(HWND, LPSTR, int, int, WORD);
  3465. BOOL FAR PASCAL DlgDirSelect(HWND, LPSTR, int);
  3466. int  FAR PASCAL DlgDirListComboBox(HWND, LPSTR, int, int, WORD);
  3467. BOOL FAR PASCAL DlgDirSelectComboBox(HWND, LPSTR, int);
  3468.  
  3469.  
  3470. /* Dialog Styles */
  3471. #define DS_ABSALIGN        0x01L
  3472. #define DS_SYSMODAL        0x02L
  3473. #define DS_LOCALEDIT        0x20L   /* Edit items get Local storage. */
  3474. #define DS_SETFONT        0x40L   /* User specified font for Dlg controls */
  3475. #define DS_MODALFRAME        0x80L   /* Can be combined with WS_CAPTION  */
  3476. #define DS_NOIDLEMSG        0x100L  /* WM_ENTERIDLE message will not be sent */
  3477.  
  3478. #define DM_GETDEFID        (WM_USER+0)
  3479. #define DM_SETDEFID        (WM_USER+1)
  3480. #define DC_HASDEFID        0x534B
  3481.  
  3482. /* Dialog Codes */
  3483. #define DLGC_WANTARROWS     0x0001    /* Control wants arrow keys        */
  3484. #define DLGC_WANTTAB        0x0002    /* Control wants tab keys        */
  3485. #define DLGC_WANTALLKEYS    0x0004    /* Control wants all keys        */
  3486. #define DLGC_WANTMESSAGE    0x0004    /* Pass message to control        */
  3487. #define DLGC_HASSETSEL        0x0008    /* Understands EM_SETSEL message    */
  3488. #define DLGC_DEFPUSHBUTTON  0x0010    /* Default pushbutton            */
  3489. #define DLGC_UNDEFPUSHBUTTON 0x0020    /* Non-default pushbutton        */
  3490. #define DLGC_RADIOBUTTON    0x0040    /* Radio button             */
  3491. #define DLGC_WANTCHARS        0x0080    /* Want WM_CHAR messages        */
  3492. #define DLGC_STATIC        0x0100    /* Static item: don't include        */
  3493. #define DLGC_BUTTON        0x2000    /* Button item: can be checked        */
  3494.  
  3495. #define LB_CTLCODE        0L
  3496.  
  3497. /* Listbox Return Values */
  3498. #define LB_OKAY         0
  3499. #define LB_ERR            (-1)
  3500. #define LB_ERRSPACE        (-2)
  3501.  
  3502. /*
  3503. **  The idStaticPath parameter to DlgDirList can have the following values
  3504. **  ORed if the list box should show other details of the files along with
  3505. **  the name of the files;
  3506. */
  3507.                   /* all other details also will be returned */
  3508.  
  3509.  
  3510. /* Listbox Notification Codes */
  3511. #define LBN_ERRSPACE        (-2)
  3512. #define LBN_SELCHANGE        1
  3513. #define LBN_DBLCLK        2
  3514. #define LBN_SELCANCEL       3
  3515. #define LBN_SETFOCUS        4
  3516. #define LBN_KILLFOCUS       5
  3517.  
  3518.  
  3519.  
  3520. #ifndef NOWINMESSAGES
  3521.  
  3522. /* Listbox messages */
  3523. #define LB_ADDSTRING           (WM_USER+1)
  3524. #define LB_INSERTSTRING        (WM_USER+2)
  3525. #define LB_DELETESTRING        (WM_USER+3)
  3526. #define LB_RESETCONTENT        (WM_USER+5)
  3527. #define LB_SETSEL           (WM_USER+6)
  3528. #define LB_SETCURSEL           (WM_USER+7)
  3529. #define LB_GETSEL           (WM_USER+8)
  3530. #define LB_GETCURSEL           (WM_USER+9)
  3531. #define LB_GETTEXT           (WM_USER+10)
  3532. #define LB_GETTEXTLEN           (WM_USER+11)
  3533. #define LB_GETCOUNT           (WM_USER+12)
  3534. #define LB_SELECTSTRING        (WM_USER+13)
  3535. #define LB_DIR               (WM_USER+14)
  3536. #define LB_GETTOPINDEX           (WM_USER+15)
  3537. #define LB_FINDSTRING           (WM_USER+16)
  3538. #define LB_GETSELCOUNT           (WM_USER+17)
  3539. #define LB_GETSELITEMS           (WM_USER+18)
  3540. #define LB_SETTABSTOPS         (WM_USER+19)
  3541. #define LB_GETHORIZONTALEXTENT (WM_USER+20)
  3542. #define LB_SETHORIZONTALEXTENT (WM_USER+21)
  3543. #define LB_SETCOLUMNWIDTH      (WM_USER+22)
  3544. #define LB_SETTOPINDEX           (WM_USER+24)
  3545. #define LB_GETITEMRECT           (WM_USER+25)
  3546. #define LB_GETITEMDATA         (WM_USER+26)
  3547. #define LB_SETITEMDATA         (WM_USER+27)
  3548. #define LB_SELITEMRANGE        (WM_USER+28)
  3549. #define LB_SETCARETINDEX       (WM_USER+31)
  3550. #define LB_GETCARETINDEX       (WM_USER+32)
  3551.  
  3552. #ifdef WIN31
  3553. #define LB_SETITEMHEIGHT       (WM_USER+33)
  3554. #define LB_GETITEMHEIGHT       (WM_USER+34)
  3555. #endif /* WIN31 */
  3556. #define LB_MSGMAX           (WM_USER+35)
  3557.  
  3558. #endif /* NOWINMESSAGES */
  3559.  
  3560. #ifndef NOWINSTYLES
  3561.  
  3562. /* Listbox Styles */
  3563. #define LBS_NOTIFY          0x0001L
  3564. #define LBS_SORT          0x0002L
  3565. #define LBS_NOREDRAW          0x0004L
  3566. #define LBS_MULTIPLESEL       0x0008L
  3567. #define LBS_OWNERDRAWFIXED    0x0010L
  3568. #define LBS_OWNERDRAWVARIABLE 0x0020L
  3569. #define LBS_HASSTRINGS        0x0040L
  3570. #define LBS_USETABSTOPS       0x0080L
  3571. #define LBS_NOINTEGRALHEIGHT  0x0100L
  3572. #define LBS_MULTICOLUMN       0x0200L
  3573. #define LBS_WANTKEYBOARDINPUT 0x0400L
  3574. #define LBS_EXTENDEDSEL          0x0800L
  3575. #ifdef WIN31
  3576. #define LBS_DISABLENOSCROLL   0x1000L
  3577. #endif /* WIN31 */
  3578. #define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  3579.  
  3580. #endif /* NOWINSTYLES */
  3581.  
  3582.  
  3583. /* Combo Box return Values */
  3584. #define CB_OKAY         0
  3585. #define CB_ERR            (-1)
  3586. #define CB_ERRSPACE        (-2)
  3587.  
  3588.  
  3589. /* Combo Box Notification Codes */
  3590. #define CBN_ERRSPACE        (-1)
  3591. #define CBN_SELCHANGE        1
  3592. #define CBN_DBLCLK        2
  3593. #define CBN_SETFOCUS        3
  3594. #define CBN_KILLFOCUS        4
  3595. #define CBN_EDITCHANGE      5
  3596. #define CBN_EDITUPDATE      6
  3597. #define CBN_DROPDOWN        7
  3598. #ifdef WIN31
  3599. #define CBN_CLOSEUP         8
  3600. #endif /* WIN31 */
  3601.  
  3602. /* Combo Box styles */
  3603. #ifndef NOWINSTYLES
  3604. #define CBS_SIMPLE          0x0001L
  3605. #define CBS_DROPDOWN          0x0002L
  3606. #define CBS_DROPDOWNLIST      0x0003L
  3607. #define CBS_OWNERDRAWFIXED    0x0010L
  3608. #define CBS_OWNERDRAWVARIABLE 0x0020L
  3609. #define CBS_AUTOHSCROLL       0x0040L
  3610. #define CBS_OEMCONVERT        0x0080L
  3611. #define CBS_SORT              0x0100L
  3612. #define CBS_HASSTRINGS        0x0200L
  3613. #define CBS_NOINTEGRALHEIGHT  0x0400L
  3614. #ifdef WIN31
  3615. #define CBS_DISABLENOSCROLL   0x0800L
  3616. #endif    /* WIN31 */
  3617. #endif  /* NOWINSTYLES */
  3618.  
  3619.  
  3620. /* Combo Box messages */
  3621. #ifndef NOWINMESSAGES
  3622. #define CB_GETEDITSEL             (WM_USER+0)
  3623. #define CB_LIMITTEXT             (WM_USER+1)
  3624. #define CB_SETEDITSEL             (WM_USER+2)
  3625. #define CB_ADDSTRING             (WM_USER+3)
  3626. #define CB_DELETESTRING             (WM_USER+4)
  3627. #define CB_DIR                   (WM_USER+5)
  3628. #define CB_GETCOUNT             (WM_USER+6)
  3629. #define CB_GETCURSEL             (WM_USER+7)
  3630. #define CB_GETLBTEXT             (WM_USER+8)
  3631. #define CB_GETLBTEXTLEN             (WM_USER+9)
  3632. #define CB_INSERTSTRING          (WM_USER+10)
  3633. #define CB_RESETCONTENT             (WM_USER+11)
  3634. #define CB_FINDSTRING             (WM_USER+12)
  3635. #define CB_SELECTSTRING             (WM_USER+13)
  3636. #define CB_SETCURSEL             (WM_USER+14)
  3637. #define CB_SHOWDROPDOWN          (WM_USER+15)
  3638. #define CB_GETITEMDATA           (WM_USER+16)
  3639. #define CB_SETITEMDATA           (WM_USER+17)
  3640. #ifdef WIN31
  3641. #define CB_GETDROPPEDCONTROLRECT (WM_USER+18)
  3642. #define CB_SETITEMHEIGHT         (WM_USER+19)
  3643. #define CB_GETITEMHEIGHT         (WM_USER+20)
  3644. #define CB_SETEXTENDEDUI         (WM_USER+21)
  3645. #define CB_GETEXTENDEDUI         (WM_USER+22)
  3646. #define CB_GETDROPPEDSTATE       (WM_USER+23)
  3647. #endif    /* WIN31 */
  3648. #define CB_MSGMAX                (WM_USER+24)
  3649. #endif  /* NOWINMESSAGES */
  3650.  
  3651.  
  3652.  
  3653. #ifndef NOWINSTYLES
  3654.  
  3655. /* Scroll Bar Styles */
  3656. #define SBS_HORZ            0x0000L
  3657. #define SBS_VERT            0x0001L
  3658. #define SBS_TOPALIGN            0x0002L
  3659. #define SBS_LEFTALIGN            0x0002L
  3660. #define SBS_BOTTOMALIGN            0x0004L
  3661. #define SBS_RIGHTALIGN            0x0004L
  3662. #define SBS_SIZEBOXTOPLEFTALIGN        0x0002L
  3663. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  3664. #define SBS_SIZEBOX            0x0008L
  3665.  
  3666. #endif /* NOWINSTYLES */
  3667.  
  3668. #endif /* NOCTLMGR */
  3669.  
  3670. #ifndef NOSOUND
  3671.  
  3672. int   FAR PASCAL OpenSound(void);
  3673. void  FAR PASCAL CloseSound(void);
  3674. int   FAR PASCAL SetVoiceQueueSize(int, int);
  3675. int   FAR PASCAL SetVoiceNote(int, int, int, int);
  3676. int   FAR PASCAL SetVoiceAccent(int, int, int, int, int);
  3677. int   FAR PASCAL SetVoiceEnvelope(int, int, int);
  3678. int   FAR PASCAL SetSoundNoise(int, int);
  3679. int   FAR PASCAL SetVoiceSound(int, LONG, int);
  3680. int   FAR PASCAL StartSound(void);
  3681. int   FAR PASCAL StopSound(void);
  3682. int   FAR PASCAL WaitSoundState(int);
  3683. int   FAR PASCAL SyncAllVoices(void);
  3684. int   FAR PASCAL CountVoiceNotes(int);
  3685. LPINT FAR PASCAL GetThresholdEvent(void);
  3686. int   FAR PASCAL GetThresholdStatus(void);
  3687. int   FAR PASCAL SetVoiceThreshold(int, int);
  3688.  
  3689. /* WaitSoundState() Constants */
  3690. #define S_QUEUEEMPTY        0
  3691. #define S_THRESHOLD        1
  3692. #define S_ALLTHRESHOLD        2
  3693.  
  3694. /* Accent Modes */
  3695. #define S_NORMAL      0
  3696. #define S_LEGATO      1
  3697. #define S_STACCATO    2
  3698.  
  3699. /* SetSoundNoise() Sources */
  3700. #define S_PERIOD512   0     /* Freq = N/512 high pitch, less coarse hiss  */
  3701. #define S_PERIOD1024  1     /* Freq = N/1024                  */
  3702. #define S_PERIOD2048  2     /* Freq = N/2048 low pitch, more coarse hiss  */
  3703. #define S_PERIODVOICE 3     /* Source is frequency from voice channel (3) */
  3704. #define S_WHITE512    4     /* Freq = N/512 high pitch, less coarse hiss  */
  3705. #define S_WHITE1024   5     /* Freq = N/1024                  */
  3706. #define S_WHITE2048   6     /* Freq = N/2048 low pitch, more coarse hiss  */
  3707. #define S_WHITEVOICE  7     /* Source is frequency from voice channel (3) */
  3708.  
  3709. #define S_SERDVNA     (-1)  /* Device not available */
  3710. #define S_SEROFM      (-2)  /* Out of memory        */
  3711. #define S_SERMACT     (-3)  /* Music active        */
  3712. #define S_SERQFUL     (-4)  /* Queue full        */
  3713. #define S_SERBDNT     (-5)  /* Invalid note        */
  3714. #define S_SERDLN      (-6)  /* Invalid note length  */
  3715. #define S_SERDCC      (-7)  /* Invalid note count   */
  3716. #define S_SERDTP      (-8)  /* Invalid tempo        */
  3717. #define S_SERDVL      (-9)  /* Invalid volume        */
  3718. #define S_SERDMD      (-10) /* Invalid mode        */
  3719. #define S_SERDSH      (-11) /* Invalid shape        */
  3720. #define S_SERDPT      (-12) /* Invalid pitch        */
  3721. #define S_SERDFQ      (-13) /* Invalid frequency    */
  3722. #define S_SERDDR      (-14) /* Invalid duration     */
  3723. #define S_SERDSR      (-15) /* Invalid source        */
  3724. #define S_SERDST      (-16) /* Invalid state        */
  3725.  
  3726. #endif /* NOSOUND */
  3727.  
  3728. #ifdef USECOMM
  3729.  
  3730. #define NOPARITY        0
  3731. #define ODDPARITY        1
  3732. #define EVENPARITY        2
  3733. #define MARKPARITY        3
  3734. #define SPACEPARITY        4
  3735.  
  3736. #define ONESTOPBIT        0
  3737. #define ONE5STOPBITS        1
  3738. #define TWOSTOPBITS        2
  3739.  
  3740. #define IGNORE            0        /* Ignore signal    */
  3741. #define INFINITE        0xFFFF  /* Infinite timeout */
  3742.  
  3743. /* Error Flags */
  3744. #define CE_RXOVER        0x0001  /* Receive Queue overflow        */
  3745. #define CE_OVERRUN        0x0002  /* Receive Overrun Error        */
  3746. #define CE_RXPARITY        0x0004  /* Receive Parity Error        */
  3747. #define CE_FRAME        0x0008  /* Receive Framing error        */
  3748. #define CE_BREAK        0x0010  /* Break Detected            */
  3749. #define CE_CTSTO        0x0020  /* CTS Timeout            */
  3750. #define CE_DSRTO        0x0040  /* DSR Timeout            */
  3751. #define CE_RLSDTO        0x0080  /* RLSD Timeout            */
  3752. #define CE_TXFULL        0x0100  /* TX Queue is full         */
  3753. #define CE_PTO            0x0200  /* LPTx Timeout            */
  3754. #define CE_IOE            0x0400  /* LPTx I/O Error            */
  3755. #define CE_DNS            0x0800  /* LPTx Device not selected     */
  3756. #define CE_OOP            0x1000  /* LPTx Out-Of-Paper        */
  3757. #define CE_MODE         0x8000  /* Requested mode unsupported   */
  3758.  
  3759. #define IE_BADID        (-1)    /* Invalid or unsupported id    */
  3760. #define IE_OPEN         (-2)    /* Device Already Open        */
  3761. #define IE_NOPEN        (-3)    /* Device Not Open            */
  3762. #define IE_MEMORY        (-4)    /* Unable to allocate queues    */
  3763. #define IE_DEFAULT        (-5)    /* Error in default parameters  */
  3764. #define IE_HARDWARE        (-10)   /* Hardware Not Present        */
  3765. #define IE_BYTESIZE        (-11)   /* Illegal Byte Size        */
  3766. #define IE_BAUDRATE        (-12)   /* Unsupported BaudRate        */
  3767.  
  3768. /* Events */
  3769. #define EV_RXCHAR        0x0001  /* Any Character received        */
  3770. #define EV_RXFLAG        0x0002  /* Received certain character   */
  3771. #define EV_TXEMPTY        0x0004  /* Transmitt Queue Empty        */
  3772. #define EV_CTS            0x0008  /* CTS changed state        */
  3773. #define EV_DSR            0x0010  /* DSR changed state        */
  3774. #define EV_RLSD         0x0020  /* RLSD changed state        */
  3775. #define EV_BREAK        0x0040  /* BREAK received            */
  3776. #define EV_ERR            0x0080  /* Line status error occurred   */
  3777. #define EV_RING         0x0100  /* Ring signal detected        */
  3778. #define EV_PERR         0x0200  /* Printer error occured        */
  3779. #define EV_CTSS             0x0400  /* CTS state                    */
  3780. #define EV_DSRS             0x0800  /* DSR state                    */
  3781. #define EV_RLSDS            0x1000  /* RLSD state                   */
  3782. #define EV_RingTe           0x2000  /* Ring trailing edge indicator */
  3783.  
  3784. /* Escape Functions */
  3785. #define SETXOFF         1        /* Simulate XOFF received        */
  3786. #define SETXON            2        /* Simulate XON received        */
  3787. #define SETRTS            3        /* Set RTS high            */
  3788. #define CLRRTS            4        /* Set RTS low            */
  3789. #define SETDTR            5        /* Set DTR high            */
  3790. #define CLRDTR            6        /* Set DTR low            */
  3791. #define RESETDEV        7        /* Reset device if possible     */
  3792.  
  3793. #define LPTx            0x80    /* Set if ID is for LPT device  */
  3794.  
  3795. #ifdef WIN31
  3796.  
  3797. /* new escape functions
  3798. #define GETMAXLPT        8        /* Max supported LPT id        */
  3799. #define GETMAXCOM        9        /* Max supported COM id        */
  3800. #define GETBASEIRQ       10        /* Get port base & irq for a port */
  3801.  
  3802. /* Comm Baud Rate indices */
  3803. #define CBR_110         0xFF10
  3804. #define CBR_300      0xFF11
  3805. #define CBR_600      0xFF12
  3806. #define CBR_1200     0xFF13
  3807. #define CBR_2400     0xFF14
  3808. #define CBR_4800     0xFF15
  3809. #define CBR_9600     0xFF16
  3810. #define CBR_14400    0xFF17
  3811. #define CBR_19200    0xFF18
  3812. /* #define CBR_RESERVED 0xFF19
  3813.    #define CBR_RESERVED 0xFF1A */
  3814. #define CBR_38400    0xFF1B
  3815. /* #define CBR_RESERVED 0xFF1C
  3816.    #define CBR_RESERVED 0xFF1D
  3817.    #define CBR_RESERVED 0xFF1E */
  3818. #define CBR_56000    0xFF1F
  3819. /* #define CBR_RESERVED 0xFF20
  3820.    #define CBR_RESERVED 0xFF21
  3821.    #define CBR_RESERVED 0xFF22 */
  3822. #define CBR_128000   0xFF23
  3823. /* #define CBR_RESERVED 0xFF24
  3824.    #define CBR_RESERVED 0xFF25
  3825.    #define CBR_RESERVED 0xFF26 */
  3826. #define CBR_256000   0xFF27
  3827.  
  3828. /* notifications passed in low word of lParam on WM_COMMNOTIFY messages */
  3829. #define ReceiveTrigger    0x01  /* at least wInTrigger bytes are in the  */
  3830.                   /* input queue                   */
  3831. #define ReceiveTimeout    0x02  /* at least 1 byte is in the input queue */
  3832.                   /* and no more have been received before */
  3833.                   /* the end of the timeout period.        */
  3834. #define TransmitTrigger 0x04  /* fewer than wOutTrigger bytes still    */
  3835.                   /* remain in the output queue waiting    */
  3836.                   /* to be transmitted.               */
  3837. #endif /* WIN31 */
  3838.  
  3839.  
  3840. typedef struct tagDCB
  3841.   {
  3842.     BYTE Id;          /* Internal Device ID             */
  3843.     WORD BaudRate;      /* Baudrate at which runing         */
  3844.     BYTE ByteSize;      /* Number of bits/byte, 4-8         */
  3845.     BYTE Parity;      /* 0-4=None,Odd,Even,Mark,Space    */
  3846.     BYTE StopBits;      /* 0,1,2 = 1, 1.5, 2             */
  3847.     WORD RlsTimeout;      /* Timeout for RLSD to be set         */
  3848.     WORD CtsTimeout;      /* Timeout for CTS to be set         */
  3849.     WORD DsrTimeout;      /* Timeout for DSR to be set         */
  3850.  
  3851.     BYTE fBinary: 1;      /* Binary Mode (skip EOF check     */
  3852.     BYTE fRtsDisable:1;   /* Don't assert RTS at init time   */
  3853.     BYTE fParity: 1;      /* Enable parity checking         */
  3854.     BYTE fOutxCtsFlow:1;  /* CTS handshaking on output         */
  3855.     BYTE fOutxDsrFlow:1;  /* DSR handshaking on output         */
  3856.     BYTE fDummy: 2;      /* Reserved                 */
  3857.     BYTE fDtrDisable:1;   /* Don't assert DTR at init time   */
  3858.  
  3859.     BYTE fOutX: 1;      /* Enable output X-ON/X-OFF         */
  3860.     BYTE fInX: 1;      /* Enable input X-ON/X-OFF         */
  3861.     BYTE fPeChar: 1;      /* Enable Parity Err Replacement   */
  3862.     BYTE fNull: 1;      /* Enable Null stripping         */
  3863.     BYTE fChEvt: 1;      /* Enable Rx character event.      */
  3864.     BYTE fDtrflow: 1;      /* DTR handshake on input         */
  3865.     BYTE fRtsflow: 1;      /* RTS handshake on input         */
  3866.     BYTE fDummy2: 1;
  3867.  
  3868.     char XonChar;      /* Tx and Rx X-ON character         */
  3869.     char XoffChar;      /* Tx and Rx X-OFF character         */
  3870.     WORD XonLim;      /* Transmit X-ON threshold         */
  3871.     WORD XoffLim;      /* Transmit X-OFF threshold         */
  3872.     char PeChar;      /* Parity error replacement char   */
  3873.     char EofChar;      /* End of Input character         */
  3874.     char EvtChar;      /* Recieved Event character         */
  3875.     WORD TxDelay;      /* Amount of time between chars    */
  3876.   } DCB;
  3877. typedef DCB FAR * LPDCB;
  3878.  
  3879. typedef struct tagCOMSTAT
  3880.   {
  3881.     BYTE fCtsHold: 1;    /* Transmit is on CTS hold       */
  3882.     BYTE fDsrHold: 1;    /* Transmit is on DSR hold       */
  3883.     BYTE fRlsdHold: 1;    /* Transmit is on RLSD hold       */
  3884.     BYTE fXoffHold: 1;    /* Received handshake           */
  3885.     BYTE fXoffSent: 1;    /* Issued handshake           */
  3886.     BYTE fEof: 1;    /* End of file character found       */
  3887.     BYTE fTxim: 1;    /* Character being transmitted       */
  3888.     WORD cbInQue;    /* count of characters in Rx Queue */
  3889.     WORD cbOutQue;    /* count of characters in Tx Queue */
  3890.   } COMSTAT;
  3891.  
  3892. int  FAR PASCAL OpenComm(LPSTR, WORD, WORD);
  3893. #ifdef WIN31
  3894. BOOL FAR PASCAL EnableCommNotification(int, HWND, int, int);
  3895. #endif    /* WIN31 */
  3896. int  FAR PASCAL SetCommState(LPDCB);
  3897. int  FAR PASCAL GetCommState(int, LPDCB);
  3898. int  FAR PASCAL ReadComm(int, LPSTR, int);
  3899. int  FAR PASCAL UngetCommChar(int, char);
  3900. int  FAR PASCAL WriteComm(int, LPSTR, int);
  3901. int  FAR PASCAL CloseComm(int);
  3902. int  FAR PASCAL GetCommError(int, COMSTAT FAR *);
  3903. int  FAR PASCAL BuildCommDCB(LPSTR, LPDCB);
  3904. int  FAR PASCAL TransmitCommChar(int, char);
  3905. WORD FAR * FAR PASCAL SetCommEventMask(int, WORD);
  3906. WORD FAR PASCAL GetCommEventMask(int, int);
  3907. int  FAR PASCAL SetCommBreak(int);
  3908. int  FAR PASCAL ClearCommBreak(int);
  3909. int  FAR PASCAL FlushComm(int, int);
  3910. LONG FAR PASCAL EscapeCommFunction(int, int);
  3911.  
  3912. #endif /* USECOMM */
  3913.  
  3914. #ifdef WIN31
  3915. #ifndef NODRIVERS
  3916. #define DRV_LOAD               0x0001
  3917. #define DRV_ENABLE             0x0002
  3918. #define DRV_OPEN               0x0003
  3919. #define DRV_CLOSE              0x0004
  3920. #define DRV_DISABLE            0x0005
  3921. #define DRV_FREE               0x0006
  3922. #define DRV_CONFIGURE          0x0007
  3923. #define DRV_QUERYCONFIGURE     0x0008
  3924. #define DRV_INSTALL            0x0009
  3925. #define DRV_REMOVE             0x000A
  3926.  
  3927. #define DRV_RESERVED           0x0800
  3928. #define DRV_USER               0x4000
  3929.  
  3930. /* Supported return values for DRV_CONFIGURE message */
  3931. #define DRVCNF_CANCEL          0x0000
  3932. #define DRVCNF_OK              0x0001
  3933. #define DRVCNF_RESTART         0x0002
  3934.  
  3935.  
  3936.  
  3937. HANDLE FAR PASCAL OpenDriver(LPSTR szDriverName, LPSTR szSectionName, LONG lParam2);
  3938. LONG   FAR PASCAL CloseDriver(HANDLE hDriver, LONG lParam1, LONG lParam2);
  3939. HANDLE FAR PASCAL GetDriverModuleHandle(HANDLE hDriver);
  3940. LONG   FAR PASCAL SendDriverMessage(HANDLE hDriver, WORD message, LONG lParam1, LONG lParam2);
  3941. LONG   FAR PASCAL DefDriverProc(DWORD dwDriverIdentifier, HANDLE driverID, WORD message, LONG lParam1, LONG lParam2);
  3942. HANDLE FAR PASCAL GetNextDriver(HANDLE, DWORD);
  3943. /* GetNextDriver flags */
  3944. #define GND_FIRSTINSTANCEONLY  0x00000001
  3945. #define GND_REVERSE            0x00000002
  3946. #define GND_ALLVALIDFLAGS      (GND_FIRSTINSTANCEONLY | GND_REVERSE)
  3947.  
  3948. typedef struct tagDRIVERINFOSTRUCT
  3949. {
  3950.   WORD   length;
  3951.   HANDLE hDriver;
  3952.   HANDLE hModule;
  3953.   char   szAliasName[128];
  3954. } DRIVERINFOSTRUCT;
  3955. typedef DRIVERINFOSTRUCT FAR *LPDRIVERINFOSTRUCT;
  3956. BOOL FAR PASCAL GetDriverInfo(HANDLE, LPDRIVERINFOSTRUCT);
  3957.  
  3958. #endif /* !NODRIVERS */
  3959. #endif /* WIN31 */
  3960.  
  3961. #ifndef NOMDI
  3962. #ifdef WIN31
  3963. /* MDI client style bits */
  3964. #define MDIS_ALLCHILDSTYLES    0x0001
  3965.  
  3966. /* wParam Flags for WM_MDITILE and WM_MDICASCADE messages. */
  3967. #define MDITILE_VERTICAL       0x0000
  3968. #define MDITILE_HORIZONTAL     0x0001
  3969. #define MDITILE_SKIPDISABLED   0x0002
  3970. #endif /* WIN31 */
  3971.  
  3972. typedef struct tagMDICREATESTRUCT
  3973.   {
  3974.     LPSTR szClass;
  3975.     LPSTR szTitle;
  3976.     HANDLE hOwner;
  3977.     int x,y;
  3978.     int cx,cy;
  3979.     LONG style;
  3980.     LONG lParam;    /* app-defined stuff */
  3981.   } MDICREATESTRUCT;
  3982.  
  3983. typedef MDICREATESTRUCT FAR * LPMDICREATESTRUCT;
  3984.  
  3985. typedef struct tagCLIENTCREATESTRUCT
  3986.   {
  3987.     HANDLE hWindowMenu;
  3988.     WORD idFirstChild;
  3989.   } CLIENTCREATESTRUCT;
  3990.  
  3991. typedef CLIENTCREATESTRUCT FAR * LPCLIENTCREATESTRUCT;
  3992.  
  3993. LONG FAR PASCAL DefFrameProc(HWND,HWND,WORD,WORD,LONG);
  3994. LONG FAR PASCAL DefMDIChildProc(HWND,WORD,WORD,LONG);
  3995.  
  3996. #ifndef NOMSG
  3997. BOOL FAR PASCAL TranslateMDISysAccel(HWND,LPMSG);
  3998. #endif
  3999.  
  4000. WORD FAR PASCAL ArrangeIconicWindows(HWND);
  4001.  
  4002. #endif /* NOMDI */
  4003.  
  4004. #ifdef WIN31
  4005. #ifndef NOSYSPARAMSINFO
  4006. /* Parameter for SystemParametersInfo() */
  4007.  
  4008. #define SPI_GETBEEP            1
  4009. #define SPI_SETBEEP            2
  4010. #define SPI_GETMOUSE            3
  4011. #define SPI_SETMOUSE            4
  4012. #define SPI_GETBORDER            5
  4013. #define SPI_SETBORDER            6
  4014. #define SPI_TIMEOUTS            7
  4015. #define SPI_KANJIMENU            8    /*; Internal */
  4016. #define SPI_GETKEYBOARDSPEED          10
  4017. #define SPI_SETKEYBOARDSPEED          11
  4018. #define SPI_LANGDRIVER           12
  4019. #define SPI_ICONHORIZONTALSPACING  13
  4020. #define SPI_GETSCREENSAVETIMEOUT   14
  4021. #define SPI_SETSCREENSAVETIMEOUT   15
  4022. #define SPI_GETSCREENSAVEACTIVE       16
  4023. #define SPI_SETSCREENSAVEACTIVE       17
  4024. #define SPI_GETGRIDGRANULARITY       18
  4025. #define SPI_SETGRIDGRANULARITY       19
  4026. #define SPI_SETDESKWALLPAPER       20
  4027. #define SPI_SETDESKPATTERN       21
  4028. #define SPI_GETKEYBOARDDELAY       22
  4029. #define SPI_SETKEYBOARDDELAY       23
  4030. #define SPI_ICONVERTICALSPACING    24
  4031. #define SPI_GETICONTITLEWRAP       25
  4032. #define SPI_SETICONTITLEWRAP       26
  4033. #define SPI_GETMENUDROPALIGNMENT   27
  4034. #define SPI_SETMENUDROPALIGNMENT   28
  4035. #define SPI_SETDOUBLECLKWIDTH      29
  4036. #define SPI_SETDOUBLECLKHEIGHT     30
  4037. #define SPI_GETICONTITLELOGFONT    31
  4038. #define SPI_SETDOUBLECLICKTIME     32
  4039. #define SPI_SETMOUSEBUTTONSWAP     33
  4040.  
  4041.  
  4042. BOOL FAR PASCAL SystemParametersInfo(WORD, WORD, LPVOID, WORD);
  4043. /* Flags */
  4044. #define SPIF_UPDATEINIFILE    0x0001
  4045. #define SPIF_SENDWININICHANGE 0x0002
  4046.  
  4047. #endif  /* NOSYSPARAMSINFO  */
  4048. #endif  /* WIN31 */
  4049.  
  4050. #endif /* NOUSER */
  4051.  
  4052. #ifndef NOHELP
  4053.  
  4054. /*  Help engine section.  */
  4055.  
  4056. /* Commands to pass WinHelp() */
  4057. #define HELP_CONTEXT    0x0001     /* Display topic in ulTopic */
  4058. #define HELP_QUIT    0x0002     /* Terminate help */
  4059. #define HELP_INDEX    0x0003     /* Display index */
  4060. #define HELP_HELPONHELP 0x0004     /* Display help on using help */
  4061. #define HELP_SETINDEX    0x0005     /* Set the current Index for multi index help */
  4062. #define HELP_KEY    0x0101     /* Display topic for keyword in offabData */
  4063. #define HELP_MULTIKEY   0x0201
  4064.  
  4065. BOOL FAR PASCAL WinHelp(HWND hwndMain, LPSTR lpszHelp, WORD usCommand, DWORD ulData);
  4066.  
  4067. typedef struct tagMULTIKEYHELP
  4068.   {
  4069.     WORD    mkSize;
  4070.     BYTE    mkKeylist;
  4071.     BYTE    szKeyphrase[1];
  4072.   } MULTIKEYHELP;
  4073.  
  4074. #endif /* NOHELP */
  4075.  
  4076. #ifndef NOPROFILER
  4077.  
  4078. /* function declarations for profiler routines contained in Windows libraries */
  4079. int  FAR PASCAL ProfInsChk(void);
  4080. void FAR PASCAL ProfSetup(int,int);
  4081. void FAR PASCAL ProfSampRate(int,int);
  4082. void FAR PASCAL ProfStart(void);
  4083. void FAR PASCAL ProfStop(void);
  4084. void FAR PASCAL ProfClear(void);
  4085. void FAR PASCAL ProfFlush(void);
  4086. void FAR PASCAL ProfFinish(void);
  4087.  
  4088. #endif /* NOPROFILER */
  4089.  
  4090. int PASCAL WinMain( HANDLE, HANDLE, LPSTR, int);
  4091. int FAR PASCAL LibMain( HANDLE, WORD, WORD, LPSTR );
  4092.  
  4093. #if defined( __cplusplus )
  4094. }
  4095. #endif  /* __cplusplus */
  4096.  
  4097. #ifndef RC_INVOKED
  4098. #pragma option -a.
  4099. #endif
  4100.  
  4101. #endif  /* __WINDOWS_H */
  4102.  
  4103.